summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <sandmann@redhat.com>2009-08-22 00:40:06 -0400
committerSøren Sandmann Pedersen <sandmann@redhat.com>2009-08-22 00:40:06 -0400
commitf61470d0bf5a9473e6faf54b7241126cc217c426 (patch)
treec0ba0b37cb85428b208d25cec1c021ca40f8224e /array.c
parentba8d2b59c5fb4dee638cae30001521fb0be4e6bf (diff)
Add array_set_size() methods; port nul_poll to use it
Diffstat (limited to 'array.c')
-rw-r--r--array.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/array.c b/array.c
index 5fdd721..aacd911 100644
--- a/array.c
+++ b/array.c
@@ -239,6 +239,22 @@ array_remove (void *data,
return array->data;
}
+static void *
+array_set_size (void *data,
+ const int *magic,
+ gsize n_elements)
+{
+ array_t *array = get_array (data, magic);
+
+ array = realloc_array (array, n_elements);
+
+ array->n_elements = n_elements;
+
+ nul_terminate (array);
+
+ return array->data;
+}
+
static gssize
array_len (const void *data, const int *magic)
{
@@ -306,6 +322,12 @@ nul_garray_remove_fast (nul_ptr_t arr, nul_ptr_t element)
return array_remove (arr, &arr_t_magic, element, TRUE);
}
+nul_ptr_t
+nul_garray_set_size (nul_ptr_t arr, gsize n_elements)
+{
+ return array_set_size (arr, &arr_t_magic, n_elements);
+}
+
/*
* Strings
*/