Skip to content

Commit bd0b421

Browse files
committed
remove reallocs preparing for custom memory management
1 parent 21acd69 commit bd0b421

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

src/util/yp_newline_list.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,12 @@ yp_newline_list_init(yp_newline_list_t *list, const uint8_t *start, size_t capac
2525
bool
2626
yp_newline_list_append(yp_newline_list_t *list, const uint8_t *cursor) {
2727
if (list->size == list->capacity) {
28+
size_t * original_offsets = list->offsets;
29+
2830
list->capacity = (list->capacity * 3) / 2;
29-
list->offsets = (size_t *) realloc(list->offsets, list->capacity * sizeof(size_t));
31+
list->offsets = (size_t *) calloc(list->capacity, sizeof(size_t));
32+
memcpy(list->offsets, original_offsets, list->size * sizeof(size_t));
33+
free(original_offsets);
3034
if (list->offsets == NULL) return false;
3135
}
3236

src/util/yp_string_list.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@ yp_string_list_init(yp_string_list_t *string_list) {
1212
void
1313
yp_string_list_append(yp_string_list_t *string_list, yp_string_t *string) {
1414
if (string_list->length + 1 > string_list->capacity) {
15+
yp_string_t * original_string = string_list->strings;
1516
string_list->capacity *= 2;
16-
string_list->strings = (yp_string_t *) realloc(string_list->strings, string_list->capacity * sizeof(yp_string_t));
17+
string_list->strings = (yp_string_t *) malloc(string_list->capacity * sizeof(yp_string_t));
18+
memcpy(string_list->strings, original_string, (string_list->length) * sizeof(yp_string_t));
19+
free(original_string);
1720
}
1821

1922
string_list->strings[string_list->length++] = *string;

0 commit comments

Comments
 (0)