]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
nulstr-util: use _cleanup_strv_free_() where appropriate
authorLennart Poettering <lennart@poettering.net>
Fri, 11 Nov 2022 21:01:03 +0000 (22:01 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 13 Nov 2022 08:39:08 +0000 (17:39 +0900)
src/basic/nulstr-util.c

index 1b6af6ffd7b300eb42eed88f24d8850a78ef6e0e..e8e5629e95296215a19b5c607b84a1a1cc82eb73 100644 (file)
@@ -13,8 +13,8 @@ char** strv_parse_nulstr(const char *s, size_t l) {
          * Note that contrary to a normal nulstr which cannot contain empty strings, because the input data
          * is terminated by any two consequent NUL bytes, this parser accepts empty strings in s. */
 
+        _cleanup_strv_free_ char **v = NULL;
         size_t c = 0, i = 0;
-        char **v;
 
         assert(s || l <= 0);
 
@@ -38,10 +38,8 @@ char** strv_parse_nulstr(const char *s, size_t l) {
                 e = memchr(p, 0, s + l - p);
 
                 v[i] = strndup(p, e ? e - p : s + l - p);
-                if (!v[i]) {
-                        strv_free(v);
+                if (!v[i])
                         return NULL;
-                }
 
                 i++;
 
@@ -53,22 +51,20 @@ char** strv_parse_nulstr(const char *s, size_t l) {
 
         assert(i == c);
 
-        return v;
+        return TAKE_PTR(v);
 }
 
 char** strv_split_nulstr(const char *s) {
-        char **r = NULL;
+        _cleanup_strv_free_ char **r = NULL;
 
         NULSTR_FOREACH(i, s)
-                if (strv_extend(&r, i) < 0) {
-                        strv_free(r);
+                if (strv_extend(&r, i) < 0)
                         return NULL;
-                }
 
         if (!r)
                 return strv_new(NULL);
 
-        return r;
+        return TAKE_PTR(r);
 }
 
 int strv_make_nulstr(char * const *l, char **ret, size_t *ret_size) {