diff --git a/ChangeLog b/ChangeLog index aa4b78291..0e9bc0dca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2001-02-09 Havoc Pennington + + * 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 * gthread.c, gthread.h: Added functions g_static_rec_mutex_init, diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index aa4b78291..0e9bc0dca 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,11 @@ +2001-02-09 Havoc Pennington + + * 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 * gthread.c, gthread.h: Added functions g_static_rec_mutex_init, diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index aa4b78291..0e9bc0dca 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,11 @@ +2001-02-09 Havoc Pennington + + * 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 * gthread.c, gthread.h: Added functions g_static_rec_mutex_init, diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index aa4b78291..0e9bc0dca 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,11 @@ +2001-02-09 Havoc Pennington + + * 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 * gthread.c, gthread.h: Added functions g_static_rec_mutex_init, diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index aa4b78291..0e9bc0dca 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,11 @@ +2001-02-09 Havoc Pennington + + * 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 * gthread.c, gthread.h: Added functions g_static_rec_mutex_init, diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index aa4b78291..0e9bc0dca 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,11 @@ +2001-02-09 Havoc Pennington + + * 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 * gthread.c, gthread.h: Added functions g_static_rec_mutex_init, diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index aa4b78291..0e9bc0dca 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,11 @@ +2001-02-09 Havoc Pennington + + * 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 * gthread.c, gthread.h: Added functions g_static_rec_mutex_init, diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index aa4b78291..0e9bc0dca 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,11 @@ +2001-02-09 Havoc Pennington + + * 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 * gthread.c, gthread.h: Added functions g_static_rec_mutex_init, diff --git a/gconvert.c b/gconvert.c index 17ba928ea..d14b63428 100644 --- a/gconvert.c +++ b/gconvert.c @@ -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. */ diff --git a/gerror.c b/gerror.c index c365bd2a3..eff62588a 100644 --- 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; } } diff --git a/glib/gconvert.c b/glib/gconvert.c index 17ba928ea..d14b63428 100644 --- a/glib/gconvert.c +++ b/glib/gconvert.c @@ -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. */ diff --git a/glib/gerror.c b/glib/gerror.c index c365bd2a3..eff62588a 100644 --- a/glib/gerror.c +++ b/glib/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; } }