diff options
author | Timo Teräs <timo.teras@iki.fi> | 2012-01-06 10:25:28 +0200 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2012-01-06 10:25:28 +0200 |
commit | bbc31806b9008b4756757f76615220400f4178a6 (patch) | |
tree | f90d61e5ad3e2ff8225f3f6b49dc2aa1b3b59a3e | |
parent | a80cdfe95b26cdcaa4b848eb8114fb2361078063 (diff) | |
download | apk-tools-bbc31806b9008b4756757f76615220400f4178a6.tar.gz apk-tools-bbc31806b9008b4756757f76615220400f4178a6.tar.bz2 apk-tools-bbc31806b9008b4756757f76615220400f4178a6.tar.xz apk-tools-bbc31806b9008b4756757f76615220400f4178a6.zip |
common: fix apk_array copying, and additional size_t fixes
-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) |