summaryrefslogtreecommitdiffstats
path: root/src/libsystemd/sd-bus/sd-bus.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsystemd/sd-bus/sd-bus.c')
-rw-r--r--src/libsystemd/sd-bus/sd-bus.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
index 58a08d5a4a..31c79241fc 100644
--- a/src/libsystemd/sd-bus/sd-bus.c
+++ b/src/libsystemd/sd-bus/sd-bus.c
@@ -286,8 +286,7 @@ _public_ int sd_bus_set_address(sd_bus *bus, const char *address) {
if (!a)
return -ENOMEM;
- free(bus->address);
- bus->address = a;
+ free_and_replace(bus->address, a);
return 0;
}
@@ -325,10 +324,9 @@ _public_ int sd_bus_set_exec(sd_bus *bus, const char *path, char *const argv[])
return -ENOMEM;
}
- free(bus->exec_path);
- strv_free(bus->exec_argv);
+ free_and_replace(bus->exec_path, p);
- bus->exec_path = p;
+ strv_free(bus->exec_argv);
bus->exec_argv = a;
return 0;
@@ -652,8 +650,8 @@ int bus_start_running(sd_bus *bus) {
static int parse_address_key(const char **p, const char *key, char **value) {
size_t l, n = 0, allocated = 0;
+ _cleanup_free_ char *r = NULL;
const char *a;
- char *r = NULL;
assert(p);
assert(*p);
@@ -681,16 +679,12 @@ static int parse_address_key(const char **p, const char *key, char **value) {
int x, y;
x = unhexchar(a[1]);
- if (x < 0) {
- free(r);
+ if (x < 0)
return x;
- }
y = unhexchar(a[2]);
- if (y < 0) {
- free(r);
+ if (y < 0)
return y;
- }
c = (char) ((x << 4) | y);
a += 3;
@@ -717,8 +711,7 @@ static int parse_address_key(const char **p, const char *key, char **value) {
*p = a;
- free(*value);
- *value = r;
+ free_and_replace(*value, r);
return 1;
}