57 lines
1.5 KiB
Diff
57 lines
1.5 KiB
Diff
From 9eb814818d0c35f0c9e05cb596508c1536b0e654 Mon Sep 17 00:00:00 2001
|
|
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
|
Date: Wed, 16 Mar 2022 22:29:32 +0900
|
|
Subject: [PATCH] strv: rewrite strv_copy() with cleanup attribute and
|
|
STRV_FOREACH()
|
|
|
|
Conflict:NA
|
|
Reference:https://github.com/systemd/systemd/commit/9eb814818d0c35f0c9e05cb596508c1536b0e654
|
|
|
|
---
|
|
src/basic/strv.c | 24 ++++++++++++------------
|
|
1 file changed, 12 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/src/basic/strv.c b/src/basic/strv.c
|
|
index cf573a3783..07a6c49b50 100644
|
|
--- a/src/basic/strv.c
|
|
+++ b/src/basic/strv.c
|
|
@@ -89,23 +89,23 @@ char** strv_free_erase(char **l) {
|
|
}
|
|
|
|
char** strv_copy(char * const *l) {
|
|
- char **r, **k;
|
|
+ _cleanup_strv_free_ char **result = NULL;
|
|
+ char **k, * const *i;
|
|
|
|
- k = r = new(char*, strv_length(l) + 1);
|
|
- if (!r)
|
|
+ result = new(char*, strv_length(l) + 1);
|
|
+ if (!result)
|
|
return NULL;
|
|
|
|
- if (l)
|
|
- for (; *l; k++, l++) {
|
|
- *k = strdup(*l);
|
|
- if (!*k) {
|
|
- strv_free(r);
|
|
- return NULL;
|
|
- }
|
|
- }
|
|
+ k = result;
|
|
+ STRV_FOREACH(i, l) {
|
|
+ *k = strdup(*i);
|
|
+ if (!*k)
|
|
+ return NULL;
|
|
+ k++;
|
|
+ }
|
|
|
|
*k = NULL;
|
|
- return r;
|
|
+ return TAKE_PTR(result);
|
|
}
|
|
|
|
size_t strv_length(char * const *l) {
|
|
--
|
|
2.33.0
|
|
|