chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bus: support temporarily const errors that don't need to be freed but require deep...
[elogind.git]
/
src
/
libsystemd-bus
/
bus-message.c
diff --git
a/src/libsystemd-bus/bus-message.c
b/src/libsystemd-bus/bus-message.c
index 639b9a6214a20b35771b98090447d9d93eb12d4b..a1e6c9f97368123fd9143c71a4e31853566d092c 100644
(file)
--- a/
src/libsystemd-bus/bus-message.c
+++ b/
src/libsystemd-bus/bus-message.c
@@
-609,6
+609,8
@@
_public_ int sd_bus_message_new_method_error(
goto fail;
}
goto fail;
}
+ t->error._need_free = -1;
+
*m = t;
return 0;
*m = t;
return 0;
@@
-709,6
+711,8
@@
int bus_message_new_synthetic_error(
goto fail;
}
goto fail;
}
+ t->error._need_free = -1;
+
*m = t;
return 0;
*m = t;
return 0;
@@
-3804,6
+3808,9
@@
int bus_message_parse_fields(sd_bus_message *m) {
return -EBADMSG;
r = message_peek_field_string(m, error_name_is_valid, &ri, &m->error.name);
return -EBADMSG;
r = message_peek_field_string(m, error_name_is_valid, &ri, &m->error.name);
+ if (r >= 0)
+ m->error._need_free = -1;
+
break;
case SD_BUS_MESSAGE_HEADER_DESTINATION:
break;
case SD_BUS_MESSAGE_HEADER_DESTINATION: