Fix: "Cleanup: clarify bytecode ownership"
[deliverable/lttng-ust.git] / liblttng-ust / lttng-events.c
index fbebc338c6f0b7e49760ff6d6f4dc556f009bd36..acf5f3b6c0744f44d7d5a2a2d50b1bf519c67d66 100644 (file)
@@ -1456,14 +1456,16 @@ int lttng_event_enabler_disable(struct lttng_event_enabler *event_enabler)
 
 static
 void _lttng_enabler_attach_filter_bytecode(struct lttng_enabler *enabler,
-               struct lttng_ust_bytecode_node *bytecode)
+               struct lttng_ust_bytecode_node **bytecode)
 {
-       bytecode->enabler = enabler;
-       cds_list_add_tail(&bytecode->node, &enabler->filter_bytecode_head);
+       (*bytecode)->enabler = enabler;
+       cds_list_add_tail(&(*bytecode)->node, &enabler->filter_bytecode_head);
+       /* Take ownership of bytecode */
+       *bytecode = NULL;
 }
 
 int lttng_event_enabler_attach_filter_bytecode(struct lttng_event_enabler *event_enabler,
-               struct lttng_ust_bytecode_node *bytecode)
+               struct lttng_ust_bytecode_node **bytecode)
 {
        _lttng_enabler_attach_filter_bytecode(
                lttng_event_enabler_as_enabler(event_enabler), bytecode);
@@ -1512,7 +1514,7 @@ int lttng_event_notifier_enabler_disable(
 
 int lttng_event_notifier_enabler_attach_filter_bytecode(
                struct lttng_event_notifier_enabler *event_notifier_enabler,
-               struct lttng_ust_bytecode_node *bytecode)
+               struct lttng_ust_bytecode_node **bytecode)
 {
        _lttng_enabler_attach_filter_bytecode(
                lttng_event_notifier_enabler_as_enabler(event_notifier_enabler),
@@ -1524,12 +1526,14 @@ int lttng_event_notifier_enabler_attach_filter_bytecode(
 
 int lttng_event_notifier_enabler_attach_capture_bytecode(
                struct lttng_event_notifier_enabler *event_notifier_enabler,
-               struct lttng_ust_bytecode_node *bytecode)
+               struct lttng_ust_bytecode_node **bytecode)
 {
-       bytecode->enabler = lttng_event_notifier_enabler_as_enabler(
+       (*bytecode)->enabler = lttng_event_notifier_enabler_as_enabler(
                        event_notifier_enabler);
-       cds_list_add_tail(&bytecode->node,
+       cds_list_add_tail(&(*bytecode)->node,
                        &event_notifier_enabler->capture_bytecode_head);
+       /* Take ownership of bytecode */
+       *bytecode = NULL;
        event_notifier_enabler->num_captures++;
 
        lttng_event_notifier_group_sync_enablers(event_notifier_enabler->group);
This page took 0.023991 seconds and 5 git commands to generate.