diff options
-rw-r--r-- | src/apk_defines.h | 1 | ||||
-rw-r--r-- | src/common.c | 6 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/apk_defines.h b/src/apk_defines.h index bfba275..3c72c73 100644 --- a/src/apk_defines.h +++ b/src/apk_defines.h @@ -108,6 +108,7 @@ void *apk_array_resize(void *array, size_t new_size, size_t elem_size); static inline void \ array_type_name##_copy(struct array_type_name **a, struct array_type_name *b)\ { \ + if (*a == b) return; \ *a = apk_array_resize(*a, b->num, sizeof(elem_type_name));\ memcpy((*a)->item, b->item, b->num * sizeof(elem_type_name));\ } \ diff --git a/src/common.c b/src/common.c index 5e6e793..36c4d07 100644 --- a/src/common.c +++ b/src/common.c @@ -10,13 +10,15 @@ #include <malloc.h> #include <string.h> +#include <unistd.h> #include "apk_defines.h" static int *dummy_array = 0; void *apk_array_resize(void *array, size_t new_size, size_t elem_size) { - int old_size, diff; + size_t old_size; + ssize_t diff; void *tmp; if (new_size == 0) { @@ -25,7 +27,7 @@ void *apk_array_resize(void *array, size_t new_size, size_t elem_size) return &dummy_array; } - old_size = array ? *((int*) array) : 0; + old_size = array ? *((size_t *) array) : 0; diff = new_size - old_size; if (array == &dummy_array) |