summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <sandmann@daimi.au.dk>2009-04-17 19:22:39 -0400
committerSøren Sandmann Pedersen <sandmann@daimi.au.dk>2009-04-17 19:22:39 -0400
commitfabe0baca982bbd124b60d6bc45ecb7e0fb15710 (patch)
treed53b5e7b4d86ec3a139529b9b449ac9e2d723a16
parentff336094ae0271b3f8b39309cdf5d3095fa846ed (diff)
Use array_append_undefined() for pointer arrays
-rw-r--r--array.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/array.c b/array.c
index c3ab83b..fce0794 100644
--- a/array.c
+++ b/array.c
@@ -64,7 +64,7 @@ static void
nul_terminate (array_t *array)
{
char *end = (char *)array->data + array->n_elements * array->element_size;
-
+
memset (end, 0, array->element_size);
}
@@ -143,7 +143,7 @@ array_append_undefined (array_t *array,
int n_elements,
void **tail)
{
- array = realloc_array (array, array->n_elements + n_elements * array->element_size);
+ array = realloc_array (array, array->n_elements + n_elements);
array->n_elements += n_elements;
@@ -244,15 +244,13 @@ void **
nul_ptr_array_append (void **arr, gpointer data)
{
array_t *array = get_array (arr, &parr_t_magic);
+ nul_ptr_t *tail;
+
+ array = array_append_undefined (array, 1, (void **)&tail);
+
+ *tail = data;
- array = realloc_array (array, array->n_elements + 1);
-
- arr = (void **)array->data;
-
- arr[array->n_elements++] = data;
- arr[array->n_elements] = NULL;
-
- return arr;
+ return (void **)array->data;
}
void