From 21a498b1a54aa59bd0a3c4e6985307ec326683d2 Mon Sep 17 00:00:00 2001 From: Sebastian Wilhelmi Date: Fri, 1 Sep 2000 12:47:42 +0000 Subject: Added function g_propagte_error to hand over local errors to the calling 2000-09-01 Sebastian Wilhelmi * gerror.c, gerror.h (g_propagte_error): Added function g_propagte_error to hand over local errors to the calling function. --- gerror.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'gerror.c') diff --git a/gerror.c b/gerror.c index 0a1a4dbc3..17baf19eb 100644 --- a/gerror.c +++ b/gerror.c @@ -117,11 +117,14 @@ g_error_matches (const GError *error, error->code == code; } +#define ERROR_OVERWRITTEN_WARNING "GError set over the top of a previous GError or uninitialized memory.\n" \ + "This indicates a bug in someone's code. You must ensure an error is NULL before it's set." + void -g_set_error (GError **err, - GQuark domain, - gint code, - const gchar *format, +g_set_error (GError **err, + GQuark domain, + gint code, + const gchar *format, ...) { va_list args; @@ -130,14 +133,28 @@ g_set_error (GError **err, return; if (*err != NULL) - g_warning ("GError set over the top of a previous GError or uninitialized memory.\n" - "This indicates a bug in someone's code. You must ensure an error is NULL before it's set."); + g_warning (ERROR_OVERWRITTEN_WARNING); va_start (args, format); *err = g_error_new_valist (domain, code, format, args); va_end (args); } +void +g_propagate_error (GError **dest, + GError *src) +{ + g_return_if_fail (src != NULL); + + if (dest == NULL) + return; + + if (*dest != NULL) + g_warning (ERROR_OVERWRITTEN_WARNING); + + *dest = src; +} + void g_clear_error (GError **err) { -- cgit v1.2.1