From b7b42524430f63427467d70b2ed014c905029105 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 2 Feb 2022 14:33:45 +0000 Subject: [PATCH 1/2] core: use strextend instead of strextendf when possible Follow-up for cdebedb4d40277aad62a7734ba920b4033228197 --- src/core/service.c | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/src/core/service.c b/src/core/service.c index c767a38b290..cb5233a5cf1 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1482,36 +1482,27 @@ static int service_create_monitor_md_env(Job *j, char **ret) { if (!env_source) continue; - if (first) { - /* Add the environment variable name first. */ - r = strextendf(&var, "MONITOR_METADATA="); - if (r < 0) - return r; + /* Add the environment variable name first. */ + if (first && !strextend(&var, "MONITOR_METADATA=")) + return -ENOMEM; - } - - r = strextendf(&var, "%sSERVICE_RESULT=%s", - !first ? list_delim : "", service_result_to_string(env_source->result)); - if (r < 0) - return r; + if (!strextend(&var, !first ? list_delim : "", "SERVICE_RESULT=", service_result_to_string(env_source->result))) + return -ENOMEM; first = false; if (env_source->main_exec_status.pid > 0 && dual_timestamp_is_set(&env_source->main_exec_status.exit_timestamp)) { - r = strextendf(&var, ",EXIT_CODE=%s", - sigchld_code_to_string(env_source->main_exec_status.code)); - if (r < 0) - return r; + if (!strextend(&var, ",EXIT_CODE=", sigchld_code_to_string(env_source->main_exec_status.code))) + return -ENOMEM; - if (env_source->main_exec_status.code == CLD_EXITED) + if (env_source->main_exec_status.code == CLD_EXITED) { r = strextendf(&var, ",EXIT_STATUS=%i", env_source->main_exec_status.status); - else - r = strextendf(&var, ",EXIT_STATUS=%s", - signal_to_string(env_source->main_exec_status.status)); - if (r < 0) - return r; + if (r < 0) + return r; + } else if (!strextend(&var, ",EXIT_STATUS=", signal_to_string(env_source->main_exec_status.status))) + return -ENOMEM; } if (!sd_id128_is_null(UNIT(env_source)->invocation_id)) { @@ -1521,9 +1512,8 @@ static int service_create_monitor_md_env(Job *j, char **ret) { return r; } - r = strextendf(&var, ",UNIT=%s", UNIT(env_source)->id); - if (r < 0) - return r; + if (!strextend(&var, ",UNIT=", UNIT(env_source)->id)) + return -ENOMEM; } *ret = TAKE_PTR(var); From dde009a8796ff8103c4278733c5cff03e1f37d7a Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 2 Feb 2022 15:16:06 +0000 Subject: [PATCH 2/2] core: simply freeing list in job_free() Follow-up for cdebedb4d40277aad62a7734ba920b4033228197 --- src/core/job.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/core/job.c b/src/core/job.c index 67c3c8fdd24..f28821071be 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -99,12 +99,8 @@ Job* job_free(Job *j) { assert(!j->subject_list); assert(!j->object_list); - do { - Unit *tu = NULL; - - LIST_FOREACH(triggered_by, tu, j->triggered_by) - LIST_REMOVE(triggered_by, j->triggered_by, tu); - } while (!LIST_IS_EMPTY(j->triggered_by)); + while (!LIST_IS_EMPTY(j->triggered_by)) + LIST_POP(triggered_by, j->triggered_by); job_unlink(j);