| 44 } |
44 } |
| 45 free(list); |
45 free(list); |
| 46 } |
46 } |
| 47 } |
47 } |
| 48 |
48 |
| 49 /* Adds an item to the list, if a NULL-list is specified, the item will |
|
| 50 * be freed. This way a NULL-list can be used as garbage bin. |
|
| 51 */ |
|
| 52 void add_string(string_list_t* list, char* item) { |
49 void add_string(string_list_t* list, char* item) { |
| 53 if (list) { |
50 assert(list != NULL); |
| 54 if (list->count < list->capacity) { |
51 if (list->count < list->capacity) { |
| 55 list->items[list->count++] = item; |
|
| 56 return; |
|
| 57 } |
|
| 58 size_t newCapacity = list->capacity * 2; |
|
| 59 char** reallocated_list = |
|
| 60 realloc(list->items, sizeof(char*) * newCapacity); |
|
| 61 assert(reallocated_list != NULL); |
|
| 62 list->capacity = newCapacity; |
|
| 63 list->items = reallocated_list; |
|
| 64 list->items[list->count++] = item; |
52 list->items[list->count++] = item; |
| 65 } else { |
53 return; |
| 66 free(item); |
|
| 67 } |
54 } |
| |
55 size_t newCapacity = list->capacity * 2; |
| |
56 char** reallocated_list = |
| |
57 realloc(list->items, sizeof(char*) * newCapacity); |
| |
58 assert(reallocated_list != NULL); |
| |
59 list->capacity = newCapacity; |
| |
60 list->items = reallocated_list; |
| |
61 list->items[list->count++] = item; |
| 68 } |
62 } |
| 69 |
63 |