diff options
-rw-r--r-- | Make.rules | 2 | ||||
-rw-r--r-- | src/apk_defines.h | 5 |
2 files changed, 4 insertions, 3 deletions
@@ -67,7 +67,7 @@ LD := $(CROSS_COMPILE)ld INSTALL := install INSTALLDIR := $(INSTALL) -d -CFLAGS ?= -g +CFLAGS ?= -g -O2 CFLAGS_ALL := -Werror -Wall -Wstrict-prototypes -D_GNU_SOURCE -std=gnu99 CFLAGS_ALL += $(CFLAGS) diff --git a/src/apk_defines.h b/src/apk_defines.h index 755d971..49ca9eb 100644 --- a/src/apk_defines.h +++ b/src/apk_defines.h @@ -83,12 +83,13 @@ typedef void (*apk_progress_cb)(void *cb_ctx, size_t); { \ struct array_type_name *tmp; \ int oldnum = a ? a->num : 0; \ + int diff = size - oldnum; \ tmp = (struct array_type_name *) \ realloc(a, sizeof(struct array_type_name) + \ size * sizeof(elem_type_name)); \ - if (size > oldnum) \ + if (diff > 0) \ memset(&tmp->item[oldnum], 0, \ - (size - oldnum) * sizeof(a->item[0])); \ + diff * sizeof(a->item[0])); \ tmp->num = size; \ return tmp; \ } \ |