diff --git a/yarp/util/yp_newline_list.c b/yarp/util/yp_newline_list.c index 0a2050df05..324d77de0b 100644 --- a/yarp/util/yp_newline_list.c +++ b/yarp/util/yp_newline_list.c @@ -25,8 +25,12 @@ yp_newline_list_init(yp_newline_list_t *list, const uint8_t *start, size_t capac bool yp_newline_list_append(yp_newline_list_t *list, const uint8_t *cursor) { if (list->size == list->capacity) { + size_t * original_offsets = list->offsets; + list->capacity = (list->capacity * 3) / 2; - list->offsets = (size_t *) realloc(list->offsets, list->capacity * sizeof(size_t)); + list->offsets = (size_t *) calloc(list->capacity, sizeof(size_t)); + memcpy(list->offsets, original_offsets, list->size * sizeof(size_t)); + free(original_offsets); if (list->offsets == NULL) return false; } diff --git a/yarp/util/yp_string_list.c b/yarp/util/yp_string_list.c index b03a3d259b..9f58d8a186 100644 --- a/yarp/util/yp_string_list.c +++ b/yarp/util/yp_string_list.c @@ -12,8 +12,11 @@ yp_string_list_init(yp_string_list_t *string_list) { void yp_string_list_append(yp_string_list_t *string_list, yp_string_t *string) { if (string_list->length + 1 > string_list->capacity) { + yp_string_t * original_string = string_list->strings; string_list->capacity *= 2; - string_list->strings = (yp_string_t *) realloc(string_list->strings, string_list->capacity * sizeof(yp_string_t)); + string_list->strings = (yp_string_t *) malloc(string_list->capacity * sizeof(yp_string_t)); + memcpy(string_list->strings, original_string, (string_list->length) * sizeof(yp_string_t)); + free(original_string); } string_list->strings[string_list->length++] = *string;