X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e0702d63ff71a32f733f7c1044b008ca60777e9b..2910fcae936946944e9b4fbc74c77767e7d5c9bd:/src/xbt/fifo.c diff --git a/src/xbt/fifo.c b/src/xbt/fifo.c index f2f95ca958..c3d4ffb905 100644 --- a/src/xbt/fifo.c +++ b/src/xbt/fifo.c @@ -507,15 +507,23 @@ xbt_fifo_item_t xbt_fifo_getPrevItem(xbt_fifo_item_t i) /* Module init/exit handling the fifo item mallocator * These are internal XBT functions called by xbt_preinit/postexit(). + * It can be used several times to recreate the mallocator, for example when you switch to MC mode */ -void xbt_fifo_preinit(void) { +void xbt_fifo_preinit(void) +{ + if (item_mallocator != NULL) { + /* Already created. I guess we want to switch to MC mode, so kill the previously created mallocator */ + xbt_mallocator_free(item_mallocator); + } + item_mallocator = xbt_mallocator_new(256, fifo_item_mallocator_new_f, fifo_item_mallocator_free_f, fifo_item_mallocator_reset_f); } -void xbt_fifo_postexit(void) { +void xbt_fifo_postexit(void) +{ if (item_mallocator != NULL) { xbt_mallocator_free(item_mallocator); item_mallocator = NULL;