refactor: changed arrayslice_to_arraylsit

This commit is contained in:
2026-05-14 06:53:38 -06:00
parent dc274787e3
commit 36bd2a37c7
2 changed files with 13 additions and 7 deletions

View File

@@ -62,6 +62,6 @@ ArrayListErr arrayslice_next(ArraySlice *slice, void *out);
ArrayListErr arrayslice_reset(ArraySlice *slice); ArrayListErr arrayslice_reset(ArraySlice *slice);
ArrayListErr arrayslice_advance(ArraySlice *slice, size_t n); ArrayListErr arrayslice_advance(ArraySlice *slice, size_t n);
ArrayListErr arrayslice_to_arraylist(ArrayList *arr, const ArraySlice *slice); ArrayListErr arrayslice_to_arraylist(ArrayList **arr, const ArraySlice *slice);
#endif #endif

View File

@@ -584,13 +584,17 @@ ArrayListErr arrayslice_advance(ArraySlice *slice, size_t n) {
return ARRLIST_OK; return ARRLIST_OK;
} }
ArrayList *arrayslice_to_arraylist(const ArraySlice *slice) { ArrayListErr arrayslice_to_arraylist(ArrayList **arr, const ArraySlice *slice) {
if (slice == NULL || slice->arr == NULL) { if (slice == NULL || slice->arr == NULL) {
return NULL; return ARRLIST_NULL_ARG;
}
if (arr == NULL || *arr == NULL) {
return ARRLIST_NULL_ARG;
} }
if (slice->start >= slice->end) { if (slice->start >= slice->end) {
return NULL; return ARRLIST_INVALID_SLICE;
} }
size_t len = slice->end - slice->start; size_t len = slice->end - slice->start;
@@ -601,8 +605,9 @@ ArrayList *arrayslice_to_arraylist(const ArraySlice *slice) {
arraylist_capacity(slice->arr), arraylist_capacity(slice->arr),
slice->arr->elem_size slice->arr->elem_size
); );
if (new_arr == NULL) {
return NULL; if (init_err != ARRLIST_OK) {
return init_err;
} }
memcpy( memcpy(
@@ -613,5 +618,6 @@ ArrayList *arrayslice_to_arraylist(const ArraySlice *slice) {
new_arr->len = len; new_arr->len = len;
return new_arr; *arr = new_arr;
return ARRLIST_OK;
} }