Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Don't call _xbt_dynar_expand when it's not needed.
[simgrid.git] / src / xbt / dynar.c
index 2ab8759..7ae8517 100644 (file)
@@ -382,9 +382,8 @@ XBT_INLINE void *xbt_dynar_set_at_ptr(const xbt_dynar_t dynar,
   _dynar_lock(dynar);
   _sanity_check_dynar(dynar);
 
-  _xbt_dynar_expand(dynar, idx + 1);
-
   if (idx >= dynar->used) {
+    _xbt_dynar_expand(dynar, idx + 1);
     _xbt_clear_mem(((char * const)dynar->data) + dynar->used * dynar->elmsize,
                    (idx + 1 - dynar->used)*dynar->elmsize);
     dynar->used = idx + 1;
@@ -404,9 +403,8 @@ _xbt_dynar_set(xbt_dynar_t dynar,
 
   _sanity_check_dynar(dynar);
 
-  _xbt_dynar_expand(dynar, idx + 1);
-
   if (idx >= dynar->used) {
+    _xbt_dynar_expand(dynar, idx + 1);
     _xbt_clear_mem(((char * const)dynar->data) + dynar->used * dynar->elmsize,
                    (idx + 1 - dynar->used)*dynar->elmsize);
     dynar->used = idx + 1;