diff options
author | Michael Biebl <biebl@debian.org> | 2018-03-06 20:13:05 +0100 |
---|---|---|
committer | Michael Biebl <biebl@debian.org> | 2018-03-06 20:13:05 +0100 |
commit | 98393f852f2f66a74f7370aa63c07b26d610343c (patch) | |
tree | 627d6c5463c0e6ac9f4f6243a9c9274acdae197d /src/basic/env-util.c | |
parent | 1d42b86df9052528a8f56b2f52d8bc2faf87b2da (diff) | |
download | systemd-98393f852f2f66a74f7370aa63c07b26d610343c.tar.gz |
New upstream version 238
Diffstat (limited to 'src/basic/env-util.c')
-rw-r--r-- | src/basic/env-util.c | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/src/basic/env-util.c b/src/basic/env-util.c index e77f9d6d3f..0b1d086394 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -539,8 +539,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { assert(format); - for (e = format, i = 0; *e && i < n; e ++, i ++) { - + for (e = format, i = 0; *e && i < n; e ++, i ++) switch (state) { case WORD: @@ -554,8 +553,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { if (!k) return NULL; - free(r); - r = k; + free_and_replace(r, k); word = e-1; state = VARIABLE; @@ -565,8 +563,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { if (!k) return NULL; - free(r); - r = k; + free_and_replace(r, k); word = e+1; state = WORD; @@ -576,8 +573,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { if (!k) return NULL; - free(r); - r = k; + free_and_replace(r, k); word = e-1; state = VARIABLE_RAW; @@ -596,8 +592,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { if (!k) return NULL; - free(r); - r = k; + free_and_replace(r, k); word = e+1; state = WORD; @@ -653,8 +648,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { if (!k) return NULL; - free(r); - r = k; + free_and_replace(r, k); word = e+1; state = WORD; @@ -673,8 +667,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { if (!k) return NULL; - free(r); - r = k; + free_and_replace(r, k); word = e--; i--; @@ -682,7 +675,6 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { } break; } - } if (state == VARIABLE_RAW) { const char *t; @@ -729,7 +721,7 @@ char **replace_env_argv(char **argv, char **env) { q = strv_length(m); l = l + q - 1; - w = realloc(ret, sizeof(char*) * (l+1)); + w = reallocarray(ret, l + 1, sizeof(char *)); if (!w) { ret[k] = NULL; strv_free(ret); |