summaryrefslogtreecommitdiff
path: root/json-glib/json-array.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@linux.intel.com>2011-06-03 11:46:05 +0100
committerEmmanuele Bassi <ebassi@linux.intel.com>2011-06-03 11:46:05 +0100
commit74bb5d61a737cceffd04c8d9ae8d5db390eda5a2 (patch)
treebfbdb7efffd574ffd555fdbebc8fc5cbaa45c8da /json-glib/json-array.c
parent4f83868e3a18adac809aff111c5df5ff7af8fedf (diff)
downloadjson-glib-74bb5d61a737cceffd04c8d9ae8d5db390eda5a2.tar.gz
Use the new atomic functions for refcounting
The newly added g_atomic_int_dec_and_test() simplified the logic for unreffing Object and Array.
Diffstat (limited to 'json-glib/json-array.c')
-rw-r--r--json-glib/json-array.c9
1 files changed, 2 insertions, 7 deletions
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;