From ab3c55435af3cecaa4b7805e8f6ffe1719e13ba6 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 7 Nov 2013 22:38:52 +0100 Subject: [PATCH] gerror: Don't leak memory when overwrite warning Even though we can't always make no-leak guarantees when g_warning() in this case we're testing this behavior in tests, and it would be good to be able to valgrind this. https://bugzilla.gnome.org/show_bug.cgi?id=711751 --- glib/gerror.c | 10 ++++++++-- glib/tests/error.c | 3 --- 2 files changed, 8 insertions(+), 5 deletions(-) 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