- assert(ref->release_func);
- if ((--ref->refcount) == 0) {
- ref->release_func(ref);
+ /* Only assert if the object has opted-in for reference counting. */
+ assert(!ref->release || ref->count > 0);
+ if ((--ref->count) == 0 && ref->release) {
+ ref->release((struct bt_object *) ref);