]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
basic/env-util: use _cleanup_ in replace_env()
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 11 Feb 2017 18:22:13 +0000 (13:22 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 20 Feb 2017 23:49:14 +0000 (18:49 -0500)
src/basic/env-util.c

index 99a130008bd6e4e977efd005697df29baa59852b..8774a8153114675f0832406dbd9d368d8fbfcb93 100644 (file)
@@ -527,7 +527,8 @@ char *replace_env(const char *format, char **env, unsigned flags) {
         } state = WORD;
 
         const char *e, *word = format;
-        char *r = NULL, *k;
+        char *k;
+        _cleanup_free_ char *r = NULL;
 
         assert(format);
 
@@ -544,7 +545,7 @@ char *replace_env(const char *format, char **env, unsigned flags) {
                         if (*e == '{') {
                                 k = strnappend(r, word, e-word-1);
                                 if (!k)
-                                        goto fail;
+                                        return NULL;
 
                                 free(r);
                                 r = k;
@@ -555,7 +556,7 @@ char *replace_env(const char *format, char **env, unsigned flags) {
                         } else if (*e == '$') {
                                 k = strnappend(r, word, e-word);
                                 if (!k)
-                                        goto fail;
+                                        return NULL;
 
                                 free(r);
                                 r = k;
@@ -574,7 +575,7 @@ char *replace_env(const char *format, char **env, unsigned flags) {
 
                                 k = strappend(r, t);
                                 if (!k)
-                                        goto fail;
+                                        return NULL;
 
                                 free(r);
                                 r = k;
@@ -586,15 +587,7 @@ char *replace_env(const char *format, char **env, unsigned flags) {
                 }
         }
 
-        k = strnappend(r, word, e-word);
-        if (!k)
-                goto fail;
-
-        free(r);
-        return k;
-
-fail:
-        return mfree(r);
+        return strnappend(r, word, e-word);
 }
 
 char **replace_env_argv(char **argv, char **env) {