Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Avoid to clear mem for the last element.
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Wed, 23 Nov 2011 14:54:14 +0000 (15:54 +0100)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Mon, 28 Nov 2011 10:21:32 +0000 (11:21 +0100)
And save a few calls to memset.

src/xbt/dynar.c

index 85687a2..3de29e1 100644 (file)
@@ -360,8 +360,10 @@ static XBT_INLINE void *_xbt_dynar_set_at_ptr(const xbt_dynar_t dynar,
 
   if (idx >= dynar->used) {
     _xbt_dynar_expand(dynar, idx + 1);
-    memset(((char * const)dynar->data) + dynar->used * dynar->elmsize, 0,
-           (idx + 1 - dynar->used)*dynar->elmsize);
+    if (idx > dynar->used) {
+      memset(_xbt_dynar_elm(dynar, dynar->used), 0,
+             (idx - dynar->used) * dynar->elmsize);
+    }
     dynar->used = idx + 1;
   }
   return _xbt_dynar_elm(dynar, idx);