X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6628f256d9dc13c27721bb9846269e5f3c653d3c..2831d2c37a4dd6d3c5d0df01e6fd0ea5d18627a1:/src/xbt/mmalloc/detach.c diff --git a/src/xbt/mmalloc/detach.c b/src/xbt/mmalloc/detach.c index b8d2320cc4..43e1ab392f 100644 --- a/src/xbt/mmalloc/detach.c +++ b/src/xbt/mmalloc/detach.c @@ -28,14 +28,22 @@ region we are about to unmap, so we first make a local copy of it on the stack and use the copy. */ +void mmalloc_pre_detach(void *md) +{ + struct mdesc *mdp = md; + xbt_os_mutex_t mutex = mdp->mutex; + mdp->mutex = NULL; + xbt_os_mutex_destroy(mutex); +} + void *mmalloc_detach(void *md) { struct mdesc mtemp; if (md != NULL) { + mmalloc_pre_detach(md); mtemp = *(struct mdesc *) md; - xbt_os_mutex_destroy(((struct mdesc *) md)->mutex); /* Now unmap all the pages associated with this region by asking for a negative increment equal to the current size of the region. */