refactor: init takes pointer to pointer for compatibliity

Its better for me this way, its just this little change at least, next
is fucking going and fixig all damn tests, the fucking wors part
This commit is contained in:
2026-05-13 20:42:04 -06:00
parent 310b25ce1f
commit d69a74dad2
2 changed files with 20 additions and 14 deletions

View File

@@ -26,34 +26,40 @@ struct ArraySlice {
static ArrayListErr arraylist_grow(ArrayList *arr);
static ArrayListErr arraylist_shrink(ArrayList *arr);
ArrayList *arraylist_init(size_t capacity, size_t elem_size) {
ArrayListErr arraylist_init(ArrayList **arr, size_t capacity, size_t elem_size) {
if (arr == NULL || *arr == NULL) {
return ARRLIST_NULL_ARG;
}
if (capacity == 0) {
return NULL;
return ARRLIST_INVALID_CAPACITY;
}
if (elem_size == 0) {
return NULL;
return ARRLIST_INVALID_ELEM_SIZE;
}
if (capacity > SIZE_MAX / elem_size) {
return NULL;
return ARRLIST_INVALID_CAPACITY;
}
ArrayList *arr = malloc(sizeof(ArrayList));
ArrayList *new_arr = malloc(sizeof(ArrayList));
if (arr == NULL) {
return NULL;
return ARRLIST_BAD_ALLOC;
}
arr->capacity = capacity;
arr->elem_size = elem_size;
arr->len = 0;
arr->borrows = 0;
arr->buffer = malloc(capacity * elem_size);
if (arr->buffer == NULL) {
new_arr->capacity = capacity;
new_arr->elem_size = elem_size;
new_arr->len = 0;
new_arr->borrows = 0;
new_arr->buffer = malloc(capacity * elem_size);
if (new_arr->buffer == NULL) {
free(arr);
return NULL;
}
return arr;
*arr = new_arr;
return ARRLIST_OK;
}
ArrayListErr arraylist_destroy(ArrayList **arr) {