diff options
Diffstat (limited to 'prism/util/pm_string_list.c')
-rw-r--r-- | prism/util/pm_string_list.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/prism/util/pm_string_list.c b/prism/util/pm_string_list.c index fa7f20619f..d49e4ed734 100644 --- a/prism/util/pm_string_list.c +++ b/prism/util/pm_string_list.c @@ -1,26 +1,19 @@ #include "prism/util/pm_string_list.h" /** - * Initialize a pm_string_list_t with its default values. - */ -void -pm_string_list_init(pm_string_list_t *string_list) { - string_list->length = 0; - string_list->capacity = 1; - string_list->strings = (pm_string_t *) malloc(sizeof(pm_string_t)); -} - -/** * Append a pm_string_t to the given string list. */ void pm_string_list_append(pm_string_list_t *string_list, pm_string_t *string) { if (string_list->length + 1 > string_list->capacity) { - pm_string_t *original_string = string_list->strings; - string_list->capacity *= 2; - string_list->strings = (pm_string_t *) malloc(string_list->capacity * sizeof(pm_string_t)); - memcpy(string_list->strings, original_string, (string_list->length) * sizeof(pm_string_t)); - free(original_string); + if (string_list->capacity == 0) { + string_list->capacity = 1; + } else { + string_list->capacity *= 2; + } + + string_list->strings = realloc(string_list->strings, string_list->capacity * sizeof(pm_string_t)); + if (string_list->strings == NULL) abort(); } string_list->strings[string_list->length++] = *string; |