aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Jamison <jackqjamison@gmail.com>2025-10-25 00:23:38 -0400
committerJack Jamison <jackqjamison@gmail.com>2025-10-25 00:23:38 -0400
commite9382e20ad82dc2c4fc962f4cf2c43b91db63423 (patch)
treee9c00c8a05545f7a431e6ef0d0d220f1a504312c
parentdd6f4cab47da3d35bc6d6c9a8eca8c77384f3bdc (diff)
fix array
-rw-r--r--array.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/array.c b/array.c
index 33f1667..88ff5a0 100644
--- a/array.c
+++ b/array.c
@@ -51,8 +51,14 @@ void* array_resize_(void* array, size_t item_size, size_t size) {
else {
info = ((array_info*)array) - 1;
}
- if (size >= info->capacity) {
- info->capacity = size;
+ if (size == -1) {
+ info->size++;
+ }
+ else {
+ info->size = size;
+ }
+ if (info->size >= info->capacity) {
+ info->capacity = info->size;
info->capacity--;
info->capacity |= info->capacity >> 1;
info->capacity |= info->capacity >> 2;
@@ -62,12 +68,6 @@ void* array_resize_(void* array, size_t item_size, size_t size) {
info->capacity++;
info = realloc(info, sizeof(array_info) + (info->capacity * item_size));
}
- if (size == -1) {
- info->size++;
- }
- else {
- info->size = size;
- }
return info->array;
}