don't overwrite errors
authorHavoc Pennington <hp@redhat.com>
Tue, 13 Feb 2001 18:20:13 +0000 (18:20 +0000)
committerHavoc Pennington <hp@src.gnome.org>
Tue, 13 Feb 2001 18:20:13 +0000 (18:20 +0000)
2001-02-09  Havoc Pennington  <hp@redhat.com>

* gconvert.c (g_convert): don't overwrite errors

* gerror.c (g_set_error): improve warning message if an error is
overwritten
(g_propagate_error): ditto

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
gconvert.c
gerror.c
glib/gconvert.c
glib/gerror.c

index aa4b782..0e9bc0d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-02-09  Havoc Pennington  <hp@redhat.com>
+
+       * gconvert.c (g_convert): don't overwrite errors
+
+       * gerror.c (g_set_error): improve warning message if an error is
+       overwritten     
+       (g_propagate_error): ditto
+
 2001-02-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Added functions g_static_rec_mutex_init,
index aa4b782..0e9bc0d 100644 (file)
@@ -1,3 +1,11 @@
+2001-02-09  Havoc Pennington  <hp@redhat.com>
+
+       * gconvert.c (g_convert): don't overwrite errors
+
+       * gerror.c (g_set_error): improve warning message if an error is
+       overwritten     
+       (g_propagate_error): ditto
+
 2001-02-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Added functions g_static_rec_mutex_init,
index aa4b782..0e9bc0d 100644 (file)
@@ -1,3 +1,11 @@
+2001-02-09  Havoc Pennington  <hp@redhat.com>
+
+       * gconvert.c (g_convert): don't overwrite errors
+
+       * gerror.c (g_set_error): improve warning message if an error is
+       overwritten     
+       (g_propagate_error): ditto
+
 2001-02-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Added functions g_static_rec_mutex_init,
index aa4b782..0e9bc0d 100644 (file)
@@ -1,3 +1,11 @@
+2001-02-09  Havoc Pennington  <hp@redhat.com>
+
+       * gconvert.c (g_convert): don't overwrite errors
+
+       * gerror.c (g_set_error): improve warning message if an error is
+       overwritten     
+       (g_propagate_error): ditto
+
 2001-02-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Added functions g_static_rec_mutex_init,
index aa4b782..0e9bc0d 100644 (file)
@@ -1,3 +1,11 @@
+2001-02-09  Havoc Pennington  <hp@redhat.com>
+
+       * gconvert.c (g_convert): don't overwrite errors
+
+       * gerror.c (g_set_error): improve warning message if an error is
+       overwritten     
+       (g_propagate_error): ditto
+
 2001-02-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Added functions g_static_rec_mutex_init,
index aa4b782..0e9bc0d 100644 (file)
@@ -1,3 +1,11 @@
+2001-02-09  Havoc Pennington  <hp@redhat.com>
+
+       * gconvert.c (g_convert): don't overwrite errors
+
+       * gerror.c (g_set_error): improve warning message if an error is
+       overwritten     
+       (g_propagate_error): ditto
+
 2001-02-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Added functions g_static_rec_mutex_init,
index aa4b782..0e9bc0d 100644 (file)
@@ -1,3 +1,11 @@
+2001-02-09  Havoc Pennington  <hp@redhat.com>
+
+       * gconvert.c (g_convert): don't overwrite errors
+
+       * gerror.c (g_set_error): improve warning message if an error is
+       overwritten     
+       (g_propagate_error): ditto
+
 2001-02-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Added functions g_static_rec_mutex_init,
index aa4b782..0e9bc0d 100644 (file)
@@ -1,3 +1,11 @@
+2001-02-09  Havoc Pennington  <hp@redhat.com>
+
+       * gconvert.c (g_convert): don't overwrite errors
+
+       * gerror.c (g_set_error): improve warning message if an error is
+       overwritten     
+       (g_propagate_error): ditto
+
 2001-02-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Added functions g_static_rec_mutex_init,
index 17ba928..d14b634 100644 (file)
@@ -233,9 +233,12 @@ g_convert (const gchar *str,
     {
       if ((p - str) != len) 
        {
-         g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_PARTIAL_INPUT,
-                      _("Partial character sequence at end of input"));
-         have_error = TRUE;
+          if (!have_error)
+            {
+              g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_PARTIAL_INPUT,
+                           _("Partial character sequence at end of input"));
+              have_error = TRUE;
+            }
        }
     }
 
@@ -337,6 +340,8 @@ g_convert_with_fallback (const gchar *str,
   else
     g_error_free (local_error);
 
+  local_error = NULL;
+  
   /* No go; to proceed, we need a converter from "UTF-8" to
    * to_codeset, and the string as UTF-8.
    */
index c365bd2..eff6258 100644 (file)
--- a/gerror.c
+++ b/gerror.c
@@ -169,7 +169,8 @@ g_error_matches (const GError *error,
 }
 
 #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."
+               "This indicates a bug in someone's code. You must ensure an error is NULL before it's set.\n" \
+               "The overwriting error message was: %s"
 
 /**
  * g_set_error:
@@ -189,17 +190,21 @@ g_set_error (GError      **err,
              const gchar  *format,
              ...)
 {
+  GError *new;
+  
   va_list args;
 
   if (err == NULL)
     return;
-
-  if (*err != NULL)
-    g_warning (ERROR_OVERWRITTEN_WARNING);
   
   va_start (args, format);
-  *err = g_error_new_valist (domain, code, format, args);
+  new = g_error_new_valist (domain, code, format, args);
   va_end (args);
+
+  if (*err == NULL)
+    *err = new;
+  else
+    g_warning (ERROR_OVERWRITTEN_WARNING, new->message);    
 }
 
 /**
@@ -225,9 +230,9 @@ g_propagate_error (GError       **dest,
   else
     {
       if (*dest != NULL)
-        g_warning (ERROR_OVERWRITTEN_WARNING);
-      
-      *dest = src;
+        g_warning (ERROR_OVERWRITTEN_WARNING, src->message);
+      else
+        *dest = src;
     }
 }
 
index 17ba928..d14b634 100644 (file)
@@ -233,9 +233,12 @@ g_convert (const gchar *str,
     {
       if ((p - str) != len) 
        {
-         g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_PARTIAL_INPUT,
-                      _("Partial character sequence at end of input"));
-         have_error = TRUE;
+          if (!have_error)
+            {
+              g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_PARTIAL_INPUT,
+                           _("Partial character sequence at end of input"));
+              have_error = TRUE;
+            }
        }
     }
 
@@ -337,6 +340,8 @@ g_convert_with_fallback (const gchar *str,
   else
     g_error_free (local_error);
 
+  local_error = NULL;
+  
   /* No go; to proceed, we need a converter from "UTF-8" to
    * to_codeset, and the string as UTF-8.
    */
index c365bd2..eff6258 100644 (file)
@@ -169,7 +169,8 @@ g_error_matches (const GError *error,
 }
 
 #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."
+               "This indicates a bug in someone's code. You must ensure an error is NULL before it's set.\n" \
+               "The overwriting error message was: %s"
 
 /**
  * g_set_error:
@@ -189,17 +190,21 @@ g_set_error (GError      **err,
              const gchar  *format,
              ...)
 {
+  GError *new;
+  
   va_list args;
 
   if (err == NULL)
     return;
-
-  if (*err != NULL)
-    g_warning (ERROR_OVERWRITTEN_WARNING);
   
   va_start (args, format);
-  *err = g_error_new_valist (domain, code, format, args);
+  new = g_error_new_valist (domain, code, format, args);
   va_end (args);
+
+  if (*err == NULL)
+    *err = new;
+  else
+    g_warning (ERROR_OVERWRITTEN_WARNING, new->message);    
 }
 
 /**
@@ -225,9 +230,9 @@ g_propagate_error (GError       **dest,
   else
     {
       if (*dest != NULL)
-        g_warning (ERROR_OVERWRITTEN_WARNING);
-      
-      *dest = src;
+        g_warning (ERROR_OVERWRITTEN_WARNING, src->message);
+      else
+        *dest = src;
     }
 }