X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0ab6b907319bfb2726f97ed2d21b9f4d6992ca86..c0a4a200c90b3384121aa4b6e30acaed9e3bd0ac:/src/xbt/mmalloc/mfree.c diff --git a/src/xbt/mmalloc/mfree.c b/src/xbt/mmalloc/mfree.c index 5586cf5400..5294c14e49 100644 --- a/src/xbt/mmalloc/mfree.c +++ b/src/xbt/mmalloc/mfree.c @@ -1,7 +1,6 @@ /* Free a block of memory allocated by `mmalloc'. */ -/* Copyright (c) 2010-2014. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2010-2017. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -14,6 +13,7 @@ #include "mmprivate.h" #include "xbt/ex.h" #include "mc/mc.h" +#include "src/mc/mc_ignore.h" /* Return memory to the heap. Like `mfree' but don't call a mfree_hook if there is one. */ @@ -23,7 +23,7 @@ void mfree(struct mdesc *mdp, void *ptr) { int type; size_t block, frag_nb; - register size_t i; + size_t i; int it; mmalloc_paranoia(mdp); @@ -51,7 +51,7 @@ void mfree(struct mdesc *mdp, void *ptr) UNLOCK(mdp); THROWF(system_error, 0, "Asked to free a fragment in a block that is already free. I'm puzzled.\n"); break; - + case MMALLOC_TYPE_UNFRAGMENTED: /* Get as many statistics as early as we can. */ mdp -> heapstats.chunks_used--; @@ -147,8 +147,8 @@ void mfree(struct mdesc *mdp, void *ptr) mdp -> heapstats.bytes_free -= bytes; } */ - /* Set the next search to begin at this block. - This is probably important to the trick where realloc returns the block to + /* Set the next search to begin at this block. + This is probably important to the trick where realloc returns the block to the system before reasking for the same block with a bigger size. */ mdp->heapindex = block; break; @@ -191,13 +191,13 @@ void mfree(struct mdesc *mdp, void *ptr) mdp->heapinfo[block].type = MMALLOC_TYPE_UNFRAGMENTED; mdp->heapinfo[block].busy_block.size = 1; mdp->heapinfo[block].busy_block.busy_size = 0; - + /* Keep the statistics accurate. */ mdp -> heapstats.chunks_used++; mdp -> heapstats.bytes_used += BLOCKSIZE; mdp -> heapstats.chunks_free -= BLOCKSIZE >> type; mdp -> heapstats.bytes_free -= BLOCKSIZE; - + mfree((void *) mdp, (void *) ADDRESS(block)); } else if (mdp->heapinfo[block].busy_frag.nfree != 0) { /* If some fragments of this block are free, you know what? I'm already happy. */ @@ -215,4 +215,3 @@ void mfree(struct mdesc *mdp, void *ptr) break; } } -