From 74bb5d61a737cceffd04c8d9ae8d5db390eda5a2 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 3 Jun 2011 11:46:05 +0100 Subject: Use the new atomic functions for refcounting The newly added g_atomic_int_dec_and_test() simplified the logic for unreffing Object and Array. --- json-glib/json-array.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'json-glib/json-array.c') diff --git a/json-glib/json-array.c b/json-glib/json-array.c index e81e846..3a21d9e 100644 --- a/json-glib/json-array.c +++ b/json-glib/json-array.c @@ -102,7 +102,7 @@ json_array_ref (JsonArray *array) g_return_val_if_fail (array != NULL, NULL); g_return_val_if_fail (array->ref_count > 0, NULL); - g_atomic_int_exchange_and_add (&array->ref_count, 1); + g_atomic_int_add (&array->ref_count, 1); return array; } @@ -118,15 +118,10 @@ json_array_ref (JsonArray *array) void json_array_unref (JsonArray *array) { - gint old_ref; - g_return_if_fail (array != NULL); g_return_if_fail (array->ref_count > 0); - old_ref = g_atomic_int_get (&array->ref_count); - if (old_ref > 1) - g_atomic_int_compare_and_exchange (&array->ref_count, old_ref, old_ref - 1); - else + if (g_atomic_int_dec_and_test (&array->ref_count)) { guint i; -- cgit v1.2.1