diff --git a/gio/gresource.c b/gio/gresource.c index 44d517d12..4ccd33364 100644 --- a/gio/gresource.c +++ b/gio/gresource.c @@ -1443,14 +1443,13 @@ g_static_resource_fini (GStaticResource *static_resource) register_lazy_static_resources_unlocked (); - resource = g_atomic_pointer_get (&static_resource->resource); + resource = g_atomic_pointer_exchange (&static_resource->resource, NULL); if (resource) { /* There should be at least two references to the resource now: one for * static_resource->resource, and one in the registered_resources list. */ g_assert (g_atomic_int_get (&resource->ref_count) >= 2); - g_atomic_pointer_set (&static_resource->resource, NULL); g_resources_unregister_unlocked (resource); g_resource_unref (resource); }