summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-05-26 14:57:50 +0200
committerThomas Haller <thaller@redhat.com>2022-05-31 18:32:33 +0200
commiteed9acc191cccc610aa09360eefb36263c1394b0 (patch)
treede8f32ded5c9c7b5632aee4d1aa65a8d7bd892bc
parent08c010cb2b700113ddb173eac8b12636b026699a (diff)
downloadNetworkManager-eed9acc191cccc610aa09360eefb36263c1394b0.tar.gz
glib-aux: add assertions to nm_strvarray_*() helpers
-rw-r--r--src/libnm-glib-aux/nm-shared-utils.h23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h
index 51a3e0afa5..fddcc8fe26 100644
--- a/src/libnm-glib-aux/nm-shared-utils.h
+++ b/src/libnm-glib-aux/nm-shared-utils.h
@@ -3121,10 +3121,14 @@ gboolean nm_utils_ifname_valid(const char *name, NMUtilsIfaceType type, GError *
static inline GArray *
nm_strvarray_ensure(GArray **p)
{
+ nm_assert(p);
+
if (!*p) {
*p = g_array_new(TRUE, FALSE, sizeof(char *));
g_array_set_clear_func(*p, nm_indirect_g_free);
- }
+ } else
+ nm_assert(g_array_get_element_size(*p) == sizeof(char *));
+
return *p;
}
@@ -3133,6 +3137,9 @@ nm_strvarray_add(GArray *array, const char *str)
{
char *s;
+ nm_assert(array);
+ nm_assert(g_array_get_element_size(array) == sizeof(char *));
+
s = g_strdup(str);
g_array_append_val(array, s);
}
@@ -3140,15 +3147,14 @@ nm_strvarray_add(GArray *array, const char *str)
static inline const char *
nm_strvarray_get_idx(GArray *array, guint idx)
{
- nm_assert(array);
- nm_assert(idx < array->len);
-
- return g_array_index(array, const char *, idx);
+ return *nm_g_array_index_p(array, const char *, idx);
}
static inline const char *const *
nm_strvarray_get_strv_non_empty(GArray *arr, guint *length)
{
+ nm_assert(!arr || g_array_get_element_size(arr) == sizeof(char *));
+
if (!arr || arr->len == 0) {
NM_SET_OUT(length, 0);
return NULL;
@@ -3163,6 +3169,8 @@ nm_strvarray_get_strv_non_empty_dup(GArray *arr, guint *length)
{
const char *const *strv;
+ nm_assert(!arr || g_array_get_element_size(arr) == sizeof(char *));
+
if (!arr || arr->len == 0) {
NM_SET_OUT(length, 0);
return NULL;
@@ -3181,6 +3189,8 @@ nm_strvarray_get_strv(GArray **arr, guint *length)
return (const char *const *) arr;
}
+ nm_assert(g_array_get_element_size(*arr) == sizeof(char *));
+
NM_SET_OUT(length, (*arr)->len);
return &g_array_index(*arr, const char *, 0);
}
@@ -3192,6 +3202,8 @@ nm_strvarray_set_strv(GArray **array, const char *const *strv)
array_old = g_steal_pointer(array);
+ nm_assert(!array_old || g_array_get_element_size(array_old) == sizeof(char *));
+
if (!strv || !strv[0])
return;
@@ -3208,6 +3220,7 @@ nm_strvarray_find_first(GArray *strv, const char *needle)
nm_assert(needle);
if (strv) {
+ nm_assert(g_array_get_element_size(strv) == sizeof(char *));
for (i = 0; i < strv->len; i++) {
if (nm_streq(needle, g_array_index(strv, const char *, i)))
return i;