diff options
-rw-r--r-- | gvdb-reader.c | 13 | ||||
-rw-r--r-- | gvdb-reader.h | 2 |
2 files changed, 9 insertions, 6 deletions
diff --git a/gvdb-reader.c b/gvdb-reader.c index aa3154f..9509388 100644 --- a/gvdb-reader.c +++ b/gvdb-reader.c @@ -332,7 +332,7 @@ gvdb_table_list_from_item (GvdbTable *table, /** * gvdb_table_get_names: * @table: a #GvdbTable - * @length: the number of items returned, or %NULL + * @length: (optional): the number of items returned, or %NULL * * Gets a list of all names contained in @table. * @@ -344,11 +344,11 @@ gvdb_table_list_from_item (GvdbTable *table, * above calls in the case of the corrupted file. Note also that the * returned strings may not be utf8. * - * Returns: a %NULL-terminated list of strings, of length @length + * Returns: (array length=length): a %NULL-terminated list of strings, of length @length **/ gchar ** gvdb_table_get_names (GvdbTable *table, - gint *length) + gsize *length) { gchar **names; gint n_names; @@ -462,7 +462,7 @@ gvdb_table_get_names (GvdbTable *table, { GPtrArray *fixed_names; - fixed_names = g_ptr_array_new (); + fixed_names = g_ptr_array_sized_new (n_names); for (i = 0; i < n_names; i++) if (names[i] != NULL) g_ptr_array_add (fixed_names, names[i]); @@ -474,7 +474,10 @@ gvdb_table_get_names (GvdbTable *table, } if (length) - *length = n_names; + { + G_STATIC_ASSERT (sizeof (*length) >= sizeof (n_names)); + *length = n_names; + } return names; } diff --git a/gvdb-reader.h b/gvdb-reader.h index 3982773..9bf627f 100644 --- a/gvdb-reader.h +++ b/gvdb-reader.h @@ -38,7 +38,7 @@ G_GNUC_INTERNAL void gvdb_table_free (GvdbTable *table); G_GNUC_INTERNAL gchar ** gvdb_table_get_names (GvdbTable *table, - gint *length); + gsize *length); G_GNUC_INTERNAL gchar ** gvdb_table_list (GvdbTable *table, const gchar *key); |