Added function g_propagte_error to hand over local errors to the calling
authorSebastian Wilhelmi <wilhelmi@ira.uka.de>
Fri, 1 Sep 2000 12:47:42 +0000 (12:47 +0000)
committerSebastian Wilhelmi <wilhelmi@src.gnome.org>
Fri, 1 Sep 2000 12:47:42 +0000 (12:47 +0000)
2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

* gerror.c, gerror.h (g_propagte_error): Added function
g_propagte_error to hand over local errors to the calling
function.

12 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gerror.c
gerror.h
glib/gerror.c
glib/gerror.h

index 1abba36..17a9a7a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gerror.c, gerror.h (g_propagte_error): Added function
+       g_propagte_error to hand over local errors to the calling
+       function.
+
 2000-08-31  Tor Lillqvist  <tml@iki.fi>
 
        * glib.h
index 1abba36..17a9a7a 100644 (file)
@@ -1,3 +1,9 @@
+2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gerror.c, gerror.h (g_propagte_error): Added function
+       g_propagte_error to hand over local errors to the calling
+       function.
+
 2000-08-31  Tor Lillqvist  <tml@iki.fi>
 
        * glib.h
index 1abba36..17a9a7a 100644 (file)
@@ -1,3 +1,9 @@
+2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gerror.c, gerror.h (g_propagte_error): Added function
+       g_propagte_error to hand over local errors to the calling
+       function.
+
 2000-08-31  Tor Lillqvist  <tml@iki.fi>
 
        * glib.h
index 1abba36..17a9a7a 100644 (file)
@@ -1,3 +1,9 @@
+2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gerror.c, gerror.h (g_propagte_error): Added function
+       g_propagte_error to hand over local errors to the calling
+       function.
+
 2000-08-31  Tor Lillqvist  <tml@iki.fi>
 
        * glib.h
index 1abba36..17a9a7a 100644 (file)
@@ -1,3 +1,9 @@
+2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gerror.c, gerror.h (g_propagte_error): Added function
+       g_propagte_error to hand over local errors to the calling
+       function.
+
 2000-08-31  Tor Lillqvist  <tml@iki.fi>
 
        * glib.h
index 1abba36..17a9a7a 100644 (file)
@@ -1,3 +1,9 @@
+2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gerror.c, gerror.h (g_propagte_error): Added function
+       g_propagte_error to hand over local errors to the calling
+       function.
+
 2000-08-31  Tor Lillqvist  <tml@iki.fi>
 
        * glib.h
index 1abba36..17a9a7a 100644 (file)
@@ -1,3 +1,9 @@
+2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gerror.c, gerror.h (g_propagte_error): Added function
+       g_propagte_error to hand over local errors to the calling
+       function.
+
 2000-08-31  Tor Lillqvist  <tml@iki.fi>
 
        * glib.h
index 1abba36..17a9a7a 100644 (file)
@@ -1,3 +1,9 @@
+2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gerror.c, gerror.h (g_propagte_error): Added function
+       g_propagte_error to hand over local errors to the calling
+       function.
+
 2000-08-31  Tor Lillqvist  <tml@iki.fi>
 
        * glib.h
index 0a1a4db..17baf19 100644 (file)
--- 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)
 {
index 7eafa94..458c20a 100644 (file)
--- a/gerror.h
+++ b/gerror.h
@@ -60,6 +60,11 @@ void     g_set_error           (GError       **err,
                                 const gchar   *format,
                                 ...) G_GNUC_PRINTF (4, 5);
 
+/* if (dest) *dest = src; also has some sanity checks.
+ */
+void     g_propagate_error     (GError       **dest,
+                               GError        *src);
+
 /* if (err && *err) { g_error_free(*err); *err = NULL; } */
 void     g_clear_error         (GError       **err);
 
index 0a1a4db..17baf19 100644 (file)
@@ -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)
 {
index 7eafa94..458c20a 100644 (file)
@@ -60,6 +60,11 @@ void     g_set_error           (GError       **err,
                                 const gchar   *format,
                                 ...) G_GNUC_PRINTF (4, 5);
 
+/* if (dest) *dest = src; also has some sanity checks.
+ */
+void     g_propagate_error     (GError       **dest,
+                               GError        *src);
+
 /* if (err && *err) { g_error_free(*err); *err = NULL; } */
 void     g_clear_error         (GError       **err);