diff --git a/glib/gmain.c b/glib/gmain.c index a0ade8acb..6571fa239 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -551,10 +551,12 @@ GSourceFuncs g_idle_funcs = GMainContext * g_main_context_ref (GMainContext *context) { - g_return_val_if_fail (context != NULL, NULL); - g_return_val_if_fail (g_atomic_int_get (&context->ref_count) > 0, NULL); + int old_ref_count; - g_atomic_int_inc (&context->ref_count); + g_return_val_if_fail (context != NULL, NULL); + + old_ref_count = g_atomic_int_add (&context->ref_count, 1); + g_return_val_if_fail (old_ref_count > 0, NULL); return context; }