sd-bus: if we don't manage to properly allocate the error message for an sd_bus_error, just go on

sd_bus_error_setfv() must initialize the sd_bus_error value to some
sensible value and then return a good errno code matching that. If it
cannot work at all it should set the error statically to the OOM error.
But if it can work half-way (i.e. initialize the name, but not the
message) it should do so and still return the correct errno number for
it.

This effectively reverts 8bf13eb1e0
This commit is contained in:
Lennart Poettering
2014-10-24 19:24:53 +02:00
parent bb1fada8cc
commit 455cd8b137
+4 -7
View File
@@ -194,13 +194,10 @@ int bus_error_setfv(sd_bus_error *e, const char *name, const char *format, va_li
return -ENOMEM;
}
if (format) {
int r;
r = vasprintf((char**) &e->message, format, ap);
if (r < 0)
return -ENOMEM;
}
/* Of we hit OOM on formatting the pretty message, we ignore
* this, since we at least managed to write the error name */
if (format)
(void) vasprintf((char**) &e->message, format, ap);
e->_need_free = 1;