diff options
Diffstat (limited to 'src/ptrarray.c')
| -rw-r--r-- | src/ptrarray.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/ptrarray.c b/src/ptrarray.c index bcffb77..bdcd428 100644 --- a/src/ptrarray.c +++ b/src/ptrarray.c @@ -40,12 +40,16 @@ void ptr_array_free(ptrarray_t *pa) free(pa); } -void ptr_array_insert(ptrarray_t *pa, void *data, long array_index) +int ptr_array_insert(ptrarray_t *pa, void *data, long array_index) { - if (!pa || !pa->pdata || !data) return; + if (!pa || !pa->pdata) return -1; long remaining = pa->capacity-pa->len; if (remaining == 0) { - pa->pdata = realloc(pa->pdata, sizeof(void*) * (pa->capacity + pa->capacity_step)); + void **newdata = (void**)realloc(pa->pdata, sizeof(void*) * (pa->capacity + pa->capacity_step)); + if (!newdata) { + return -1; + } + pa->pdata = newdata; pa->capacity += pa->capacity_step; } if (array_index < 0 || array_index >= pa->len) { @@ -55,11 +59,12 @@ void ptr_array_insert(ptrarray_t *pa, void *data, long array_index) pa->pdata[array_index] = data; } pa->len++; + return 0; } -void ptr_array_add(ptrarray_t *pa, void *data) +int ptr_array_add(ptrarray_t *pa, void *data) { - ptr_array_insert(pa, data, -1); + return ptr_array_insert(pa, data, -1); } void ptr_array_remove(ptrarray_t *pa, long array_index) @@ -89,3 +94,8 @@ void* ptr_array_index(ptrarray_t *pa, long array_index) } return pa->pdata[array_index]; } + +long ptr_array_size(ptrarray_t *pa) +{ + return pa->len; +} |
