From de322afcd988c71d2dab986da2a8ea6a6222e2a9 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 6 Dec 2022 18:07:01 +0100 Subject: [PATCH] glib-aux: add nm_g_array_append_val() g_array_append_val() takes the pointer of the macro argument, that only works with lvalues. Add nm_g_array_append_val() --- src/libnm-glib-aux/nm-shared-utils.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h index 008217036b..b65d9e93d0 100644 --- a/src/libnm-glib-aux/nm-shared-utils.h +++ b/src/libnm-glib-aux/nm-shared-utils.h @@ -1989,6 +1989,20 @@ nm_g_array_unref(GArray *arr) &g_array_index(arr, Type, _len); \ }) +#define nm_g_array_append_simple(arr, val) \ + G_STMT_START \ + { \ + /* Similar to `g_array_append_val()`, but `g_array_append_val()` + * only works with lvalues. That makes sense if the value is a larger + * struct and you anyway have a pointer to it. It doesn't make sense + * if you have a list of int and want to append a number literal. + * + * nm_g_array_append_simple() is different. It depends on typeof(val) + * to be compatible. */ \ + (*nm_g_array_append_new((arr), typeof(val))) = (val); \ + } \ + G_STMT_END + /*****************************************************************************/ static inline GPtrArray *