X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Ferror-query.cpp;fp=src%2Fcommon%2Ferror-query.cpp;h=8c1bb95414feb84e1300a5570c47cd9ce0c83501;hb=1ad48d9678f8f123dc7d44dbbfadc9957b7e970e;hp=31de0ee5e764c7d1b0ea98a784668afaedbdc304;hpb=aafac6e102f9a2a44318743e521a3270a580051d;p=lttng-tools.git diff --git a/src/common/error-query.cpp b/src/common/error-query.cpp index 31de0ee5e..8c1bb9541 100644 --- a/src/common/error-query.cpp +++ b/src/common/error-query.cpp @@ -58,7 +58,7 @@ struct lttng_error_query_action { struct lttng_error_query parent; /* Mutable only because of the reference count. */ struct lttng_trigger *trigger; - struct lttng_action_path action_path; + struct lttng_action_path *action_path; }; struct lttng_error_query_result_comm { @@ -248,15 +248,45 @@ end: void lttng_error_query_destroy(struct lttng_error_query *query) { - struct lttng_error_query_trigger *trigger_query; - if (!query) { return; } - trigger_query = container_of(query, typeof(*trigger_query), parent); - lttng_trigger_put(trigger_query->trigger); - free(trigger_query); + switch (query->target_type) { + case LTTNG_ERROR_QUERY_TARGET_TYPE_TRIGGER: + { + struct lttng_error_query_trigger *trigger_query = + container_of(query, typeof(*trigger_query), + parent); + + lttng_trigger_put(trigger_query->trigger); + free(trigger_query); + break; + } + case LTTNG_ERROR_QUERY_TARGET_TYPE_CONDITION: + { + struct lttng_error_query_condition *condition_query = + container_of(query, typeof(*condition_query), + parent); + + lttng_trigger_put(condition_query->trigger); + free(condition_query); + break; + } + case LTTNG_ERROR_QUERY_TARGET_TYPE_ACTION: + { + struct lttng_error_query_action *action_query = + container_of(query, typeof(*action_query), + parent); + + lttng_trigger_put(action_query->trigger); + lttng_action_path_destroy(action_query->action_path); + free(action_query); + break; + } + default: + abort(); + } } static @@ -688,7 +718,7 @@ int lttng_error_query_action_serialize(const struct lttng_error_query *query, goto end; } - ret = lttng_action_path_serialize(&query_action->action_path, payload); + ret = lttng_action_path_serialize(query_action->action_path, payload); if (ret) { goto end; } @@ -738,7 +768,7 @@ struct lttng_action *lttng_error_query_action_borrow_action_target( container_of(query, typeof(*query_action), parent); return get_trigger_action_from_path( - trigger, &query_action->action_path); + trigger, query_action->action_path); } int lttng_error_query_serialize(const struct lttng_error_query *query,