X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f249ab2158bcbed49cf4db2d249cf5ffbc59b22e..76936ddebd0a514a3259454d475b254ce40947b3:/src/xbt/dynar.c diff --git a/src/xbt/dynar.c b/src/xbt/dynar.c index ae75d30cce..c630ff0796 100644 --- a/src/xbt/dynar.c +++ b/src/xbt/dynar.c @@ -291,7 +291,7 @@ XBT_INLINE unsigned long xbt_dynar_length(const xbt_dynar_t dynar) return (dynar ? (unsigned long) dynar->used : (unsigned long) 0); } -/**@brief check if a dynar is empty + /**@brief check if a dynar is empty * *\param dynar the dynat we want to check */ @@ -704,13 +704,14 @@ XBT_INLINE void xbt_dynar_sort(xbt_dynar_t dynar, */ XBT_INLINE void * xbt_dynar_to_array (xbt_dynar_t dynar) { - void * res; - void * last = xbt_new0(char,dynar->elmsize); - xbt_dynar_push(dynar, last); - free(last); - res = dynar->data; - free(dynar); - return res; + void *res; + xbt_dynar_shrink(dynar, 1); + memset(xbt_dynar_push_ptr(dynar), 0, dynar->elmsize); + res = dynar->data; + if (dynar->mutex) + xbt_mutex_destroy(dynar->mutex); + free(dynar); + return res; } /*