- if (!ref) {
- return;
- }
-
- base = container_of(ref, struct bt_ctf_base, ref_count);
- event = container_of(base, struct bt_ctf_event, base);
- if (event->event_class) {
- bt_ctf_event_class_put(event->event_class);
- }
- if (event->event_header) {
- bt_ctf_field_put(event->event_header);
- }
- if (event->context_payload) {
- bt_ctf_field_put(event->context_payload);
- }
- if (event->fields_payload) {
- bt_ctf_field_put(event->fields_payload);
+ event = container_of(obj, struct bt_ctf_event, base);
+ if (!event->base.parent) {
+ /*
+ * Event was keeping a reference to its class since it shared no
+ * common ancestor with it to guarantee they would both have the
+ * same lifetime.
+ */
+ bt_put(event->event_class);