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:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user