* SOFTWARE.
*/
-#include <babeltrace/ref-internal.h>
+#define BT_LOG_TAG "REF"
+#include <babeltrace/lib-logging-internal.h>
+
+#include <babeltrace/assert-pre-internal.h>
#include <babeltrace/object-internal.h>
void *bt_get(void *ptr)
goto end;
}
- if (unlikely(obj->parent && bt_object_get_ref_count(obj) == 0)) {
- bt_get(obj->parent);
- }
- bt_ref_get(&obj->ref_count);
+ BT_ASSERT_PRE(obj->is_shared, "Object is not shared: addr=%p", obj);
+ bt_object_get_no_null_check(obj);
+
end:
- return obj;
+ return ptr;
}
void bt_put(void *ptr)
return;
}
- bt_ref_put(&obj->ref_count);
+ BT_ASSERT_PRE(obj->is_shared, "Object is not shared: addr=%p", obj);
+ BT_ASSERT_PRE(bt_object_get_ref_count(obj) > 0,
+ "Decrementing a reference count set to 0: addr=%p", ptr);
+ bt_object_put_no_null_check(obj);
}