X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Ferror-query.c;h=266597b3dcc935ec5444444bcce9b2f30760f3e6;hb=702f26c8641ee4554c629d13b9367b1e93f96e31;hp=17fd5ffae030cb3404803fafcd8a90eddef26ffe;hpb=b99a0cb3edd93f55e712096a352d64b79d4716bb;p=lttng-tools.git diff --git a/src/common/error-query.c b/src/common/error-query.c index 17fd5ffae..266597b3d 100644 --- a/src/common/error-query.c +++ b/src/common/error-query.c @@ -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; @@ -141,24 +145,24 @@ extern struct lttng_error_query *lttng_error_query_action_create( * action list. * * Note that action comparisons are performed by pointer since multiple - * otherwise identical actions can be found in an action group (two + * otherwise identical actions can be found in an action list (two * notify actions, for example). */ if (action != trigger->action && lttng_action_get_type(trigger->action) == LTTNG_ACTION_TYPE_GROUP) { - unsigned int i, action_group_count; + unsigned int i, action_list_count; enum lttng_action_status action_status; - action_status = lttng_action_group_get_count( - trigger->action, &action_group_count); + action_status = lttng_action_list_get_count( + trigger->action, &action_list_count); if (action_status != LTTNG_ACTION_STATUS_OK) { - goto end; + goto error; } - for (i = 0; i < action_group_count; i++) { + for (i = 0; i < action_list_count; i++) { const struct lttng_action *candidate_action = - lttng_action_group_get_at_index( + lttng_action_list_get_at_index( trigger->action, i); assert(candidate_action); @@ -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; } @@ -351,6 +358,7 @@ lttng_error_query_result_counter_create( goto error; } + counter->value = value; goto end; error: lttng_error_query_result_destroy(&counter->parent); @@ -659,15 +667,15 @@ const struct lttng_trigger *lttng_error_query_action_borrow_trigger_target( } LTTNG_HIDDEN -const struct lttng_action *lttng_error_query_action_borrow_action_target( +struct lttng_action *lttng_error_query_action_borrow_action_target( const struct lttng_error_query *query, - const struct lttng_trigger *trigger) + struct lttng_trigger *trigger) { - const struct lttng_action *target_action = NULL; + struct lttng_action *target_action = NULL; const struct lttng_error_query_action *query_action = container_of(query, typeof(*query_action), parent); - const struct lttng_action *trigger_action = - lttng_trigger_get_const_action(trigger); + struct lttng_action *trigger_action = + lttng_trigger_get_action(trigger); if (!query_action->action_index.is_set) { target_action = trigger_action; @@ -678,7 +686,8 @@ const struct lttng_action *lttng_error_query_action_borrow_action_target( goto end; } - target_action = lttng_action_group_get_at_index(trigger_action, + target_action = lttng_action_list_borrow_mutable_at_index( + trigger_action, LTTNG_OPTIONAL_GET(query_action->action_index)); } @@ -730,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)); @@ -745,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( @@ -766,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; @@ -776,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; @@ -825,14 +832,13 @@ ssize_t lttng_error_query_create_from_payload(struct lttng_payload_view *view, goto end; } - target_action = lttng_action_group_get_at_index( + target_action = lttng_action_list_get_at_index( trigger->action, action_header->action_index.value); } *query = lttng_error_query_action_create( trigger, target_action); - lttng_trigger_put(trigger); if (!*query) { used_size = -1; goto end; @@ -846,6 +852,7 @@ ssize_t lttng_error_query_create_from_payload(struct lttng_payload_view *view, } end: + lttng_trigger_put(trigger); return used_size; }