From 66b300d4284a2fc7840df03572f515a261ba5ec0 Mon Sep 17 00:00:00 2001 From: Dvir Volk Date: Tue, 3 May 2016 19:48:53 +0300 Subject: [PATCH] fixed vector resizing logic --- rmutil/vector.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rmutil/vector.c b/rmutil/vector.c index 1b81d90..a5a325e 100644 --- a/rmutil/vector.c +++ b/rmutil/vector.c @@ -45,9 +45,13 @@ int Vector_Resize(Vector *v, int newcap) { v->cap = newcap; v->data = realloc(v->data, v->cap*v->elemSize); - int offset = oldcap*v->elemSize; + + // If we grew: // put all zeros at the newly realloc'd part of the vector - memset(v->data + offset, 0, v->cap*v->elemSize - offset); + if (newcap > oldcap) { + int offset = oldcap*v->elemSize; + memset(v->data + offset, 0, v->cap*v->elemSize - offset); + } return v->cap; }