X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/630ec674ef1d824672647bd7b1b64e91d6d88eaa..0d1dd360cb78fd7553037145656807a7e6d2274a:/src/xbt/mmalloc/mfree.c diff --git a/src/xbt/mmalloc/mfree.c b/src/xbt/mmalloc/mfree.c index a6735e019f..322d81875f 100644 --- a/src/xbt/mmalloc/mfree.c +++ b/src/xbt/mmalloc/mfree.c @@ -4,7 +4,7 @@ Written May 1989 by Mike Haertel. Heavily modified Mar 1992 by Fred Fish. (fnf@cygnus.com) */ -/* Copyright (c) 2010. The SimGrid Team. +/* Copyright (c) 2010-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -34,7 +34,7 @@ void mfree(struct mdesc *mdp, void *ptr) block = BLOCK(ptr); if ((char *) ptr < (char *) mdp->heapbase || block > mdp->heapsize) { - fprintf(stderr,"Ouch, this pointer is not mine. I refuse to free it. I refuse it to death!!\n"); + fprintf(stderr,"Ouch, this pointer is not mine, I refuse to free it. Give me valid pointers, or give me death!!\n"); abort(); } @@ -55,7 +55,7 @@ void mfree(struct mdesc *mdp, void *ptr) mdp -> heapinfo[block].busy_block.size * BLOCKSIZE; if(MC_is_active()){ - if(mdp->heapinfo[block].busy_block.ignore == 1) + if(mdp->heapinfo[block].busy_block.ignore > 0) MC_remove_ignore_heap(ptr, mdp -> heapinfo[block].busy_block.busy_size); } @@ -162,13 +162,14 @@ void mfree(struct mdesc *mdp, void *ptr) } if(MC_is_active()){ - if(mdp->heapinfo[block].busy_frag.ignore[frag_nb] == 1) + if(mdp->heapinfo[block].busy_frag.ignore[frag_nb] > 0) MC_remove_ignore_heap(ptr, mdp->heapinfo[block].busy_frag.frag_size[frag_nb]); } /* Set size used in the fragment to -1 */ mdp->heapinfo[block].busy_frag.frag_size[frag_nb] = -1; - + mdp->heapinfo[block].busy_frag.ignore[frag_nb] = 0; + // fprintf(stderr,"nfree:%zu capa:%d\n", mdp->heapinfo[block].busy_frag.nfree,(BLOCKSIZE >> type)); if (mdp->heapinfo[block].busy_frag.nfree == (BLOCKSIZE >> type) - 1) {