summaryrefslogtreecommitdiff
path: root/src/basic
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2023-04-21 14:24:47 +0200
committerDavid Tardon <dtardon@redhat.com>2023-04-27 21:42:38 +0200
commitcc09d8a5a1e0b5bec836987244aa6f073a7a61da (patch)
tree33980cd911bb6e6ca6215076249b2512be0e1fc2 /src/basic
parent5013d6def39802297972d63394f05693723e4b91 (diff)
downloadsystemd-cc09d8a5a1e0b5bec836987244aa6f073a7a61da.tar.gz
env-util: use _cleanup_ in replace_env_argv()
Diffstat (limited to 'src/basic')
-rw-r--r--src/basic/env-util.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/basic/env-util.c b/src/basic/env-util.c
index e3ae1a9663..03b4547cf3 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) {