diff options
author | Thomas Haller <thaller@redhat.com> | 2019-10-27 12:06:20 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-11-07 11:34:36 +0100 |
commit | 9b2d5742c1ca16e3c58cf9c6015c99c1f051a312 (patch) | |
tree | 2e3baa269cb62b462567b213a3c4b6b96cada3aa | |
parent | d21439eaa0f80512dce211c9b2bc9032e0873820 (diff) | |
download | NetworkManager-9b2d5742c1ca16e3c58cf9c6015c99c1f051a312.tar.gz |
shared: add nm_g_set_error_take*() util
-rw-r--r-- | shared/nm-glib-aux/nm-shared-utils.h | 24 |
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 |