summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libsystemd/sd-path/sd-path.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
index 5b6bff1139..12ff30ef86 100644
--- a/src/libsystemd/sd-path/sd-path.c
+++ b/src/libsystemd/sd-path/sd-path.c
@@ -325,8 +325,9 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
}
_public_ int sd_path_home(uint64_t type, const char *suffix, char **path) {
- char *buffer = NULL, *cc;
+ _cleanup_free_ char *buffer = NULL;
const char *ret;
+ char *cc;
int r;
assert_return(path, -EINVAL);
@@ -351,7 +352,7 @@ _public_ int sd_path_home(uint64_t type, const char *suffix, char **path) {
if (!buffer)
return -ENOMEM;
- *path = buffer;
+ *path = TAKE_PTR(buffer);
return 0;
}
@@ -366,19 +367,16 @@ _public_ int sd_path_home(uint64_t type, const char *suffix, char **path) {
return -ENOMEM;
}
- *path = buffer;
+ *path = TAKE_PTR(buffer);
return 0;
}
suffix += strspn(suffix, "/");
cc = path_join(ret, suffix);
-
- free(buffer);
-
if (!cc)
return -ENOMEM;
- *path = cc;
+ *path = TAKE_PTR(cc);
return 0;
}