lttng add-trigger: remove support for conditions other than event-rule-matches
[lttng-tools.git] / src / common / error-query.c
index d353c5a8ff090e5064114facb3c9d44e031ffe6f..031257b27ec6e7d4bed66648dfbbe0ca8b47708a 100644 (file)
@@ -95,25 +95,29 @@ struct lttng_error_query *lttng_error_query_trigger_create(
                const struct lttng_trigger *trigger)
 {
        struct lttng_error_query_trigger *query = NULL;
-       struct lttng_trigger *trigger_copy;
+       struct lttng_trigger *trigger_copy = NULL;
 
-       trigger_copy = lttng_trigger_copy(trigger);
-       if (!trigger_copy) {
+       if (!trigger) {
                goto end;
        }
 
-       if (!trigger) {
+       trigger_copy = lttng_trigger_copy(trigger);
+       if (!trigger_copy) {
                goto end;
        }
 
        query = zmalloc(sizeof(*query));
        if (!query) {
                PERROR("Failed to allocate trigger error query");
-               goto end;
+               goto error;
        }
 
        query->parent.target_type = LTTNG_ERROR_QUERY_TARGET_TYPE_TRIGGER;
        query->trigger = trigger_copy;
+       trigger_copy = NULL;
+
+error:
+       lttng_trigger_put(trigger_copy);
 end:
        return query ? &query->parent : NULL;
 }
@@ -124,7 +128,7 @@ extern struct lttng_error_query *lttng_error_query_action_create(
 {
        struct lttng_error_query_action *query = NULL;
        typeof(query->action_index) action_index;
-       struct lttng_trigger *trigger_copy;
+       struct lttng_trigger *trigger_copy = NULL;
 
        if (!trigger || !action) {
                goto end;
@@ -153,7 +157,7 @@ extern struct lttng_error_query *lttng_error_query_action_create(
                action_status = lttng_action_group_get_count(
                                trigger->action, &action_group_count);
                if (action_status != LTTNG_ACTION_STATUS_OK) {
-                       goto end;
+                       goto error;
                }
 
                for (i = 0; i < action_group_count; i++) {
@@ -170,25 +174,28 @@ extern struct lttng_error_query *lttng_error_query_action_create(
 
                if (!action_index.is_set) {
                        /* Not found; invalid action. */
-                       goto end;
+                       goto error;
                }
        } else {
                /*
                 * Trigger action is not a group and not equal to the target
                 * action; invalid action provided.
                 */
-               goto end;
+               goto error;
        }
 
        query = zmalloc(sizeof(*query));
        if (!query) {
                PERROR("Failed to allocate action error query");
-               goto end;
+               goto error;
        }
 
        query->parent.target_type = LTTNG_ERROR_QUERY_TARGET_TYPE_ACTION;
        query->trigger = trigger_copy;
+       trigger_copy = NULL;
        query->action_index = action_index;
+error:
+       lttng_trigger_put(trigger_copy);
 end:
        return query ? &query->parent : NULL;
 }
@@ -732,6 +739,7 @@ ssize_t lttng_error_query_create_from_payload(struct lttng_payload_view *view,
 {
        ssize_t used_size = 0;
        struct lttng_error_query_comm *header;
+       struct lttng_trigger *trigger = NULL;
        struct lttng_payload_view header_view =
                        lttng_payload_view_from_view(view, 0, sizeof(*header));
 
@@ -747,7 +755,6 @@ ssize_t lttng_error_query_create_from_payload(struct lttng_payload_view *view,
        switch ((enum lttng_error_query_target_type) header->target_type) {
        case LTTNG_ERROR_QUERY_TARGET_TYPE_TRIGGER:
        {
-               struct lttng_trigger *trigger;
                ssize_t trigger_used_size;
                struct lttng_payload_view trigger_view =
                                lttng_payload_view_from_view(
@@ -768,7 +775,6 @@ ssize_t lttng_error_query_create_from_payload(struct lttng_payload_view *view,
                used_size += trigger_used_size;
 
                *query = lttng_error_query_trigger_create(trigger);
-               lttng_trigger_put(trigger);
                if (!*query) {
                        used_size = -1;
                        goto end;
@@ -778,7 +784,6 @@ ssize_t lttng_error_query_create_from_payload(struct lttng_payload_view *view,
        }
        case LTTNG_ERROR_QUERY_TARGET_TYPE_ACTION:
        {
-               struct lttng_trigger *trigger;
                const struct lttng_action *target_action;
                ssize_t trigger_used_size;
                struct lttng_error_query_action_comm *action_header;
@@ -834,7 +839,6 @@ ssize_t lttng_error_query_create_from_payload(struct lttng_payload_view *view,
 
                *query = lttng_error_query_action_create(
                                trigger, target_action);
-               lttng_trigger_put(trigger);
                if (!*query) {
                        used_size = -1;
                        goto end;
@@ -848,6 +852,7 @@ ssize_t lttng_error_query_create_from_payload(struct lttng_payload_view *view,
        }
 
 end:
+       lttng_trigger_put(trigger);
        return used_size;
 }
 
This page took 0.024921 seconds and 4 git commands to generate.