From 709735959711a5b387721db2be6d22df6ab55768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 19 Feb 2025 05:18:44 +0100 Subject: [PATCH] gmain: Ensure old reference is valid during unref We were checking this already, leading to an extra atomic read that isn't needed. --- glib/gmain.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/glib/gmain.c b/glib/gmain.c index 7258eade6..c89ffdc73 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -2229,6 +2229,8 @@ retry_beginning: return; } + g_return_if_fail (old_ref > 0); + if (!have_lock && context) LOCK_CONTEXT (context); @@ -2359,7 +2361,7 @@ void g_source_unref (GSource *source) { g_return_if_fail (source != NULL); - g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0); + /* refcount is checked inside g_source_unref_internal() */ g_source_unref_internal (source, source->context, FALSE); }