[glib: 7/10] gresource: Use atomic pointer exchange operations to nullify and check




commit bfd77693cedc37713b6f1799a694fd44af9ccfe2
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Tue Jun 21 05:01:17 2022 +0200

    gresource: Use atomic pointer exchange operations to nullify and check

 gio/gresource.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
---
diff --git a/gio/gresource.c b/gio/gresource.c
index 44d517d120..4ccd333644 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);
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]