@@ -58,7 +58,7 @@ struct lttng_error_query_action {
58
58
struct lttng_error_query parent;
59
59
/* Mutable only because of the reference count. */
60
60
struct lttng_trigger *trigger;
61
- struct lttng_action_path action_path;
61
+ struct lttng_action_path * action_path;
62
62
};
63
63
64
64
struct lttng_error_query_result_comm {
@@ -248,15 +248,45 @@ struct lttng_error_query *lttng_error_query_action_create(
248
248
249
249
void lttng_error_query_destroy (struct lttng_error_query *query)
250
250
{
251
- struct lttng_error_query_trigger *trigger_query;
252
-
253
251
if (!query) {
254
252
return ;
255
253
}
256
254
257
- trigger_query = container_of (query, typeof (*trigger_query), parent);
258
- lttng_trigger_put (trigger_query->trigger );
259
- free (trigger_query);
255
+ switch (query->target_type ) {
256
+ case LTTNG_ERROR_QUERY_TARGET_TYPE_TRIGGER:
257
+ {
258
+ struct lttng_error_query_trigger *trigger_query =
259
+ container_of (query, typeof (*trigger_query),
260
+ parent);
261
+
262
+ lttng_trigger_put (trigger_query->trigger );
263
+ free (trigger_query);
264
+ break ;
265
+ }
266
+ case LTTNG_ERROR_QUERY_TARGET_TYPE_CONDITION:
267
+ {
268
+ struct lttng_error_query_condition *condition_query =
269
+ container_of (query, typeof (*condition_query),
270
+ parent);
271
+
272
+ lttng_trigger_put (condition_query->trigger );
273
+ free (condition_query);
274
+ break ;
275
+ }
276
+ case LTTNG_ERROR_QUERY_TARGET_TYPE_ACTION:
277
+ {
278
+ struct lttng_error_query_action *action_query =
279
+ container_of (query, typeof (*action_query),
280
+ parent);
281
+
282
+ lttng_trigger_put (action_query->trigger );
283
+ lttng_action_path_destroy (action_query->action_path );
284
+ free (action_query);
285
+ break ;
286
+ }
287
+ default :
288
+ abort ();
289
+ }
260
290
}
261
291
262
292
static
@@ -688,7 +718,7 @@ int lttng_error_query_action_serialize(const struct lttng_error_query *query,
688
718
goto end;
689
719
}
690
720
691
- ret = lttng_action_path_serialize (& query_action->action_path , payload);
721
+ ret = lttng_action_path_serialize (query_action->action_path , payload);
692
722
if (ret) {
693
723
goto end;
694
724
}
@@ -738,7 +768,7 @@ struct lttng_action *lttng_error_query_action_borrow_action_target(
738
768
container_of (query, typeof (*query_action), parent);
739
769
740
770
return get_trigger_action_from_path (
741
- trigger, & query_action->action_path );
771
+ trigger, query_action->action_path );
742
772
}
743
773
744
774
int lttng_error_query_serialize (const struct lttng_error_query *query,
0 commit comments