X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fref.c;fp=lib%2Fref.c;h=153146af4622484e2c6437220c364012d36fb37e;hb=b1912a652c31a5700b07500b0b1dab274d06ea17;hp=3a9cb61c60f1c4af99bc23d7bcff7274e690f809;hpb=c2db73d1b0ef9e63a6a4dac2ce5ca3f3f00fcfb7;p=babeltrace.git diff --git a/lib/ref.c b/lib/ref.c index 3a9cb61c..153146af 100644 --- a/lib/ref.c +++ b/lib/ref.c @@ -38,6 +38,10 @@ void *bt_get(void *ptr) goto end; } + if (unlikely(!obj->ref_count.release)) { + goto end; + } + if (unlikely(obj->parent && bt_object_get_ref_count(obj) == 0)) { BT_LOGV("Incrementing object's parent's reference count: " "addr=%p, parent-addr=%p", ptr, obj->parent); @@ -49,6 +53,7 @@ void *bt_get(void *ptr) ptr, obj->ref_count.count, obj->ref_count.count + 1); bt_ref_get(&obj->ref_count); + end: return obj; } @@ -61,6 +66,10 @@ void bt_put(void *ptr) return; } + if (unlikely(!obj->ref_count.release)) { + return; + } + BT_LOGV("Decrementing object's reference count: %lu -> %lu: " "addr=%p, cur-count=%lu, new-count=%lu", obj->ref_count.count, obj->ref_count.count - 1,