diff --git a/glib/gerror.c b/glib/gerror.c index 809d0c940..81e6b716c 100644 --- a/glib/gerror.c +++ b/glib/gerror.c @@ -563,7 +563,10 @@ g_set_error (GError **err, if (*err == NULL) *err = new; else - g_warning (ERROR_OVERWRITTEN_WARNING, new->message); + { + g_warning (ERROR_OVERWRITTEN_WARNING, new->message); + g_error_free (new); + } } /** @@ -619,7 +622,10 @@ g_propagate_error (GError **dest, else { if (*dest != NULL) - g_warning (ERROR_OVERWRITTEN_WARNING, src->message); + { + g_warning (ERROR_OVERWRITTEN_WARNING, src->message); + g_error_free (src); + } else *dest = src; } diff --git a/glib/tests/error.c b/glib/tests/error.c index 81b4055dd..ebbd965dc 100644 --- a/glib/tests/error.c +++ b/glib/tests/error.c @@ -28,10 +28,7 @@ test_overwrite (void) g_test_assert_expected_messages (); g_assert_error (dest, G_MARKUP_ERROR, G_MARKUP_ERROR_EMPTY); - g_assert_error (src, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE); g_error_free (dest); - g_error_free (src); - } static void