diff --git a/src/list.c b/src/list.c index cca816e..6ec9a6a 100644 --- a/src/list.c +++ b/src/list.c @@ -37,8 +37,8 @@ List list_copy(const List* source) { void list_empty(List* self) { if(self->data == NULL || self->cap == 0) return; - self->data = realloc(self->data, LIST_DEFAULT_RESERVE * self->element_size); - self->cap = LIST_DEFAULT_RESERVE; + self->data = NULL; + self->cap = 0; self->len = 0; } @@ -51,7 +51,11 @@ void list_reserve(List* self, size_t at_least) { new_cap *= 2; } - void* new = realloc(self->data, new_cap * self->element_size); + void* new; + if(self->data == NULL) + new = malloc(new_cap * self->element_size); + else + new = realloc(self->data, new_cap * self->element_size); ASSERT_RETURN(new != NULL,, "Failed to reserve space for %zu extra elements in list", new_cap); self->data = new;