From: David Tardon Date: Fri, 21 Apr 2023 12:24:47 +0000 (+0200) Subject: env-util: use _cleanup_ in replace_env_argv() X-Git-Tag: v254-rc1~603^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc09d8a5a1e0b5bec836987244aa6f073a7a61da;p=thirdparty%2Fsystemd.git env-util: use _cleanup_ in replace_env_argv() --- diff --git a/src/basic/env-util.c b/src/basic/env-util.c index e3ae1a9663c..03b4547cf33 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -732,7 +732,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { } char **replace_env_argv(char **argv, char **env) { - char **ret; + _cleanup_strv_free_ char **ret = NULL; size_t k = 0, l = 0; l = strv_length(argv); @@ -756,7 +756,6 @@ char **replace_env_argv(char **argv, char **env) { r = strv_split_full(&m, e, WHITESPACE, EXTRACT_RELAX|EXTRACT_UNQUOTE); if (r < 0) { ret[k] = NULL; - strv_free(ret); return NULL; } } else @@ -768,7 +767,6 @@ char **replace_env_argv(char **argv, char **env) { w = reallocarray(ret, l + 1, sizeof(char *)); if (!w) { ret[k] = NULL; - strv_free(ret); strv_free(m); return NULL; } @@ -785,15 +783,13 @@ char **replace_env_argv(char **argv, char **env) { /* If ${FOO} appears as part of a word, replace it by the variable as-is */ ret[k] = replace_env(*i, env, 0); - if (!ret[k]) { - strv_free(ret); + if (!ret[k]) return NULL; - } k++; } ret[k] = NULL; - return ret; + return TAKE_PTR(ret); } int getenv_bool(const char *p) {