From c9ef461aa1f37b48054cf07e57a1e32a2ed6021e Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Fri, 4 Apr 2025 01:03:55 +0100 Subject: [PATCH] gclosure: Ensure all reads of GClosure.ref_count are atomic Remove the last few non-atomic reads of `GClosure.ref_count`. See previous commits for an explanation of why this is important. Signed-off-by: Philip Withnall --- gobject/gclosure.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gobject/gclosure.c b/gobject/gclosure.c index 63207ce0f..e2a1bf91f 100644 --- a/gobject/gclosure.c +++ b/gobject/gclosure.c @@ -593,12 +593,12 @@ GClosure* g_closure_ref (GClosure *closure) { guint new_ref_count; + g_return_val_if_fail (closure != NULL, NULL); - g_return_val_if_fail (closure->ref_count > 0, NULL); - g_return_val_if_fail (closure->ref_count < CLOSURE_MAX_REF_COUNT, NULL); ATOMIC_INC_ASSIGN (closure, ref_count, &new_ref_count); g_return_val_if_fail (new_ref_count > 1, NULL); + g_return_val_if_fail (new_ref_count < CLOSURE_MAX_REF_COUNT + 1, NULL); return closure; }