X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fref-internal.h;h=c5d8143a61caa1ac0202ffb379afe9337c5a4291;hb=675860f431adca1ab381c80955c402f8480d8259;hp=8578de97b2ec1808eded8e9887961c1e3e7f4644;hpb=78586d8a10bfb11d34d187697ae15e9255c6ddf4;p=babeltrace.git diff --git a/include/babeltrace/ref-internal.h b/include/babeltrace/ref-internal.h index 8578de97..c5d8143a 100644 --- a/include/babeltrace/ref-internal.h +++ b/include/babeltrace/ref-internal.h @@ -50,6 +50,11 @@ static inline void bt_ref_get(struct bt_ref *ref) { assert(ref); + + if (unlikely(!ref->release)) { + return; + } + ref->count++; /* Overflow check. */ assert(ref->count); @@ -60,7 +65,7 @@ void bt_ref_put(struct bt_ref *ref) { assert(ref); /* Only assert if the object has opted-in for reference counting. */ - if ((--ref->count) == 0 && ref->release) { + if (unlikely((--ref->count) == 0 && ref->release)) { ref->release((struct bt_object *) ref); } }