summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-10-27 12:06:20 +0100
committerThomas Haller <thaller@redhat.com>2019-11-07 11:34:36 +0100
commit9b2d5742c1ca16e3c58cf9c6015c99c1f051a312 (patch)
tree2e3baa269cb62b462567b213a3c4b6b96cada3aa
parentd21439eaa0f80512dce211c9b2bc9032e0873820 (diff)
downloadNetworkManager-9b2d5742c1ca16e3c58cf9c6015c99c1f051a312.tar.gz
shared: add nm_g_set_error_take*() util
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/shared/nm-glib-aux/nm-shared-utils.h b/shared/nm-glib-aux/nm-shared-utils.h
index c027769aa2..380c7b766a 100644
--- a/shared/nm-glib-aux/nm-shared-utils.h
+++ b/shared/nm-glib-aux/nm-shared-utils.h
@@ -684,6 +684,30 @@ _nm_g_slice_free_fcn_define (32)
/*****************************************************************************/
+static inline void
+nm_g_set_error_take (GError **error, GError *error_take)
+{
+ if (!error_take)
+ g_return_if_reached ();
+ if (!error) {
+ g_error_free (error_take);
+ return;
+ }
+ if (*error) {
+ g_error_free (error_take);
+ g_return_if_reached ();
+ }
+ *error = error_take;
+}
+
+#define nm_g_set_error_take_lazy(error, error_take_lazy) \
+ G_STMT_START { \
+ GError **_error = (error); \
+ \
+ if (_error) \
+ nm_g_set_error_take (_error, (error_take_lazy)); \
+ } G_STMT_END
+
/**
* NMUtilsError:
* @NM_UTILS_ERROR_UNKNOWN: unknown or unclassified error