diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-09-04 12:02:46 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-09-04 19:15:45 +0900 |
commit | caf4ba83d528ea06a3b668e716a60ece46a6ec84 (patch) | |
tree | d84d7bd6f9e53c836f41ea59cf2b9f476321953e /src/libsystemd | |
parent | c9f0e1ce5fbec130fca3189ef3c74712a8253ffd (diff) | |
download | systemd-caf4ba83d528ea06a3b668e716a60ece46a6ec84.tar.gz |
sd-bus: use _cleanup_free_ macro in sd_bus_error_set_errnofv()
No functional change.
Diffstat (limited to 'src/libsystemd')
-rw-r--r-- | src/libsystemd/sd-bus/bus-error.c | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c index 0530ebe179..e7a93d3a5a 100644 --- a/src/libsystemd/sd-bus/bus-error.c +++ b/src/libsystemd/sd-bus/bus-error.c @@ -484,7 +484,6 @@ _public_ int sd_bus_error_set_errno(sd_bus_error *e, int error) { _public_ int sd_bus_error_set_errnofv(sd_bus_error *e, int error, const char *format, va_list ap) { PROTECT_ERRNO; - int r; if (error < 0) error = -error; @@ -515,33 +514,30 @@ _public_ int sd_bus_error_set_errnofv(sd_bus_error *e, int error, const char *fo } if (format) { - char *m; + _cleanup_free_ char *m = NULL; /* Then, let's try to fill in the supplied message */ errno = error; /* Make sure that %m resolves to the specified error */ - r = vasprintf(&m, format, ap); - if (r >= 0) { + if (vasprintf(&m, format, ap) < 0) + goto fail; - if (e->_need_free <= 0) { - char *t; + if (e->_need_free <= 0) { + char *t; - t = strdup(e->name); - if (t) { - e->_need_free = 1; - e->name = t; - e->message = m; - return -error; - } + t = strdup(e->name); + if (!t) + goto fail; - free(m); - } else { - e->message = m; - return -error; - } + e->_need_free = 1; + e->name = t; } + + e->message = TAKE_PTR(m); + return -error; } +fail: /* If that didn't work, use strerror() for the message */ bus_error_strerror(e, error); return -error; |