X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Ftrigger.c;h=e69e72e076267be0b7b6290b9032cc11b941caa1;hp=785fce3fcf0271e66a3d11a2777905dba3bd04fc;hb=6808ef55e;hpb=3e6e0df2f8f9f23d252c2508b6d741916dfcc4b3 diff --git a/src/common/trigger.c b/src/common/trigger.c index 785fce3fc..e69e72e07 100644 --- a/src/common/trigger.c +++ b/src/common/trigger.c @@ -129,7 +129,7 @@ void lttng_trigger_destroy(struct lttng_trigger *trigger) LTTNG_HIDDEN ssize_t lttng_trigger_create_from_payload( struct lttng_payload_view *src_view, - struct lttng_trigger **trigger) + struct lttng_trigger **_trigger) { ssize_t ret, offset = 0, condition_size, action_size, name_size = 0; struct lttng_condition *condition = NULL; @@ -140,11 +140,12 @@ ssize_t lttng_trigger_create_from_payload( .uid = LTTNG_OPTIONAL_INIT_UNSET, .gid = LTTNG_OPTIONAL_INIT_UNSET, }; + struct lttng_trigger *trigger = NULL; const struct lttng_payload_view trigger_comm_view = lttng_payload_view_from_view( src_view, 0, sizeof(*trigger_comm)); - if (!src_view || !trigger) { + if (!src_view || !_trigger) { ret = -1; goto end; } @@ -229,13 +230,13 @@ ssize_t lttng_trigger_create_from_payload( goto error; } - *trigger = lttng_trigger_create(condition, action); - if (!*trigger) { + trigger = lttng_trigger_create(condition, action); + if (!trigger) { ret = -1; goto error; } - lttng_trigger_set_credentials(*trigger, &creds); + lttng_trigger_set_credentials(trigger, &creds); /* * The trigger object owns references to the action and condition @@ -249,7 +250,7 @@ ssize_t lttng_trigger_create_from_payload( if (name) { const enum lttng_trigger_status status = - lttng_trigger_set_name(*trigger, name); + lttng_trigger_set_name(trigger, name); if (status != LTTNG_TRIGGER_STATUS_OK) { ret = -1; @@ -260,9 +261,15 @@ ssize_t lttng_trigger_create_from_payload( ret = offset; error: - lttng_condition_destroy(condition); - lttng_action_destroy(action); + lttng_condition_put(condition); + lttng_action_put(action); end: + if (ret == 0) { + *_trigger = trigger; + } else { + lttng_trigger_put(trigger); + } + return ret; }