[glib: 2/11] Fix type of length returned by gvdb_table_get_names()
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 2/11] Fix type of length returned by gvdb_table_get_names()
- Date: Mon, 25 Feb 2019 13:04:34 +0000 (UTC)
commit a44329c2442ff45d31fe7a0ca45005f145df3187
Author: Philip Withnall <withnall endlessm com>
Date: Thu Aug 16 15:36:32 2018 +0100
Fix type of length returned by gvdb_table_get_names()
It should not be unsigned. The type in the on-disk format is gint32, so
we need to return something at least as wide as that. However, we
should not expose the implementation detail that the on-disk format is
specifically gint32. Use a gsize, since that’s the normal type for array
lengths — but check that we’re not on a platform where (somehow) gsize
is smaller than gint32.
Signed-off-by: Philip Withnall <withnall endlessm com>
gvdb-reader.c | 7 +++++--
gvdb-reader.h | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/gvdb-reader.c b/gvdb-reader.c
index c2ee84d2b..ae349a62c 100644
--- a/gvdb-reader.c
+++ b/gvdb-reader.c
@@ -348,7 +348,7 @@ gvdb_table_list_from_item (GvdbTable *table,
**/
gchar **
gvdb_table_get_names (GvdbTable *table,
- gint *length)
+ gsize *length)
{
gchar **names;
gint n_names;
@@ -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 39827737d..9bf627f4b 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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]