Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Don't call _xbt_dynar_expand when it's not needed.
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Wed, 23 Nov 2011 12:22:46 +0000 (13:22 +0100)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Mon, 28 Nov 2011 10:21:31 +0000 (11:21 +0100)
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;