From 7605995c71aeabcb6b01782337a40f2cbb592e64 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 4 Jan 2013 12:03:06 -0800 Subject: [PATCH] core: Reference counts are signed integers --- src/adapter.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 9e9f67d57..0370358d1 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -124,7 +124,7 @@ struct discovery { }; struct btd_adapter { - unsigned int ref_count; + int ref_count; uint16_t dev_id; struct mgmt *mgmt; @@ -2005,22 +2005,16 @@ static void adapter_free(gpointer user_data) struct btd_adapter *btd_adapter_ref(struct btd_adapter *adapter) { - adapter->ref_count++; - - DBG("%p: ref_count=%u", adapter, adapter->ref_count); + __sync_fetch_and_add(&adapter->ref_count, 1); return adapter; } void btd_adapter_unref(struct btd_adapter *adapter) { - gchar *path; - - adapter->ref_count--; - - DBG("%p: ref_count=%u", adapter, adapter->ref_count); + char *path; - if (adapter->ref_count > 0) + if (__sync_sub_and_fetch(&adapter->ref_count, 1)) return; if (!adapter->path) { -- 2.47.3