summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2014-01-09 11:21:16 +0100
committerGravatar Nikias Bassen2014-01-09 11:21:16 +0100
commitbad870a5d072e5959f1adb01648dc3dbcc790b3b (patch)
treef329e9990454c740e8499887917b615cb4f6a3df
parent37f8ba3c2bdfe54c50d4f7f7f396c38c63a354be (diff)
downloadusbmuxd-bad870a5d072e5959f1adb01648dc3dbcc790b3b.tar.gz
usbmuxd-bad870a5d072e5959f1adb01648dc3dbcc790b3b.tar.bz2
utils: collection_add don't double capacity but instead increase by a fixed amount
-rw-r--r--src/utils.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/utils.c b/src/utils.c
index 475a921..245894e 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -71,11 +71,13 @@ void fdlist_reset(struct fdlist *list)
71 list->count = 0; 71 list->count = 0;
72} 72}
73 73
74#define CAPACITY_STEP 8
75
74void collection_init(struct collection *col) 76void collection_init(struct collection *col)
75{ 77{
76 col->list = malloc(sizeof(void *)); 78 col->list = malloc(sizeof(void *) * CAPACITY_STEP);
77 memset(col->list, 0, sizeof(void *)); 79 memset(col->list, 0, sizeof(void *) * CAPACITY_STEP);
78 col->capacity = 1; 80 col->capacity = CAPACITY_STEP;
79} 81}
80 82
81void collection_free(struct collection *col) 83void collection_free(struct collection *col)
@@ -94,10 +96,10 @@ void collection_add(struct collection *col, void *element)
94 return; 96 return;
95 } 97 }
96 } 98 }
97 col->list = realloc(col->list, sizeof(void*) * col->capacity * 2); 99 col->list = realloc(col->list, sizeof(void*) * (col->capacity + CAPACITY_STEP));
98 memset(&col->list[col->capacity], 0, sizeof(void *) * col->capacity); 100 memset(&col->list[col->capacity], 0, sizeof(void *) * CAPACITY_STEP);
99 col->list[col->capacity] = element; 101 col->list[col->capacity] = element;
100 col->capacity *= 2; 102 col->capacity += CAPACITY_STEP;
101} 103}
102 104
103void collection_remove(struct collection *col, void *element) 105void collection_remove(struct collection *col, void *element)