/* Change the size of a block allocated by `mmalloc'. */
-/* Copyright (c) 2010-2019. The SimGrid Team.
+/* Copyright (c) 2010-2020. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
size_t requested_size = size; // The amount of memory requested by user, for real
- /* Work even if the user was stupid enough to ask a ridicullously small block (even 0-length),
+ /* Work even if the user was stupid enough to ask a ridiculously small block (even 0-length),
* ie return a valid block that can be realloced and freed.
* glibc malloc does not use this trick but return a constant pointer, but we need to enlist the free fragments later on.
*/
/* Full blocks -> Full blocks; see if we can hold it in place. */
blocks = BLOCKIFY(size);
if (blocks < mdp->heapinfo[block].busy_block.size) {
- int it;
/* The new size is smaller; return excess memory to the free list. */
- for (it= block+blocks; it< mdp->heapinfo[block].busy_block.size ; it++){
+ for (size_t it = block + blocks; it < mdp->heapinfo[block].busy_block.size; it++) {
mdp->heapinfo[it].type = MMALLOC_TYPE_UNFRAGMENTED; // FIXME that should be useless, type should already be 0 here
mdp->heapinfo[it].busy_block.ignore = 0;
mdp->heapinfo[it].busy_block.size = 0;
default: /* Fragment -> ??; type=logarithm to base two of the fragment size. */
- if (type < 0) {
- fprintf(stderr, "Unkown mmalloc block type.\n");
+ if (type <= 0) {
+ fprintf(stderr, "Unknown mmalloc block type.\n");
abort();
}
/* The new size is the same kind of fragment. */
result = ptr;
- int frag_nb = RESIDUAL(result, BLOCKSIZE) >> type;
+ uintptr_t frag_nb = RESIDUAL(result, BLOCKSIZE) >> type;
mdp->heapinfo[block].busy_frag.frag_size[frag_nb] = requested_size;
mdp->heapinfo[block].busy_frag.ignore[frag_nb] = 0;