aboutsummaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'array.c')
-rw-r--r--array.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/array.c b/array.c
index b0db3f5..78317e9 100644
--- a/array.c
+++ b/array.c
@@ -12,7 +12,7 @@ err_t array_malloc(struct bowl *self, size_t size)
struct bowl_arr *arr = malloc(sizeof(struct bowl_arr));
CHECK(arr, MALLOC_FAILED)
- arr->size = 2;
+ arr->size = size;
arr->used = 0;
struct bowl **ptr = calloc(sizeof(struct bowl *), arr->size);
@@ -109,12 +109,21 @@ err_t array_free(struct bowl *self)
struct bowl_arr *arr = self->_pl.array;
CHECK(arr, INVALID_STATE)
+ err_t e;
for(int i = 0; i < arr->used; i++) {
- err_t e = bowl_free(arr->ptr[i]);
+ e = bowl_free(arr->ptr[i]);
if(e) break;
}
free(arr->ptr);
free(arr);
+ return e;
+}
+
+err_t array_free_shallow(struct bowl_arr *arr)
+{
+ CHECK(arr, INVALID_STATE)
+ free(arr->ptr);
+ free(arr);
return OK;
-} \ No newline at end of file
+}