summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-10-26 13:33:44 +0200
committerThomas Haller <thaller@redhat.com>2023-11-15 17:59:25 +0100
commit73947cdfd011041b9d9a591ff77320620df2882f (patch)
treec4b010f2488950e18702c188bbbaf0f50226bf84
parent7ab9a2b69f531f16d87771b65352eaa1fde827ae (diff)
glib-aux: add nm_strvarray_clear() helper
-rw-r--r--src/libnm-glib-aux/nm-shared-utils.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h
index 5c7ea95714..f27f6f7d73 100644
--- a/src/libnm-glib-aux/nm-shared-utils.h
+++ b/src/libnm-glib-aux/nm-shared-utils.h
@@ -3154,6 +3154,24 @@ _nm_strvarray_cmp_strv(const GArray *strv, const char *const *ss, gsize ss_len)
#define nm_strvarray_equal_strv(strv, ss, ss_len) \
(nm_strvarray_cmp_strv((strv), (ss), (ss_len)) == 0)
+static inline gboolean
+nm_strvarray_clear(GArray **array)
+{
+ gboolean cleared = FALSE;
+
+ nm_assert(array);
+ nm_assert(!*array || sizeof(char *) == g_array_get_element_size(*array));
+
+ if (*array) {
+ /* We always clear the GArray, but we return TRUE only if the
+ * array was non-empty before. */
+ if ((*array)->len > 0)
+ cleared = TRUE;
+ nm_clear_pointer(array, g_array_unref);
+ }
+ return cleared;
+}
+
/*****************************************************************************/
struct _NMVariantAttributeSpec {