From ece936e84dd64af12cb609a8d25f3711a288cc57 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Sat, 6 Nov 2010 09:45:20 -0400 Subject: [PATCH] gmain: fix some silly code in a programmer-error case Previously if a source got finalized while still attached to a context, it would warn and re-ref the source. But then it just freed it anyway... So keep the warning but drop the re-ref. https://bugzilla.gnome.org/show_bug.cgi?id=634239 --- glib/gmain.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/glib/gmain.c b/glib/gmain.c index 301adb0a7..05b081341 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -1511,13 +1511,12 @@ g_source_unref_internal (GSource *source, source->callback_data = NULL; source->callback_funcs = NULL; - if (context && !SOURCE_DESTROYED (source)) + if (context) { - g_warning (G_STRLOC ": ref_count == 0, but source is still attached to a context!"); - source->ref_count++; + if (!SOURCE_DESTROYED (source)) + g_warning (G_STRLOC ": ref_count == 0, but source was still attached to a context!"); + g_source_list_remove (source, context); } - else if (context) - g_source_list_remove (source, context); if (source->source_funcs->finalize) {