diff options
author | Steffen Kieß <Steffen.Kiess@ipvs.uni-stuttgart.de> | 2016-02-22 11:04:44 +0100 |
---|---|---|
committer | Steffen Kieß <Steffen.Kiess@ipvs.uni-stuttgart.de> | 2016-02-22 11:04:44 +0100 |
commit | 021325e5e5cec6fe618f7ac6bcc2f5a20f40f07f (patch) | |
tree | 906d8cd96691991bdb2c5709d02f55ceab75273d | |
parent | 9e97cdbcc029da35b5341777de092fa16908fb52 (diff) | |
download | dbus-c++-021325e5e5cec6fe618f7ac6bcc2f5a20f40f07f.tar.gz |
Fix copying containers
dbus_message_iter_open_container() needs a signature argument for variants
and arrays, and NULL for structs and dict entries.
-rw-r--r-- | src/message.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/message.cpp b/src/message.cpp index 3f0cac4..eacea92 100644 --- a/src/message.cpp +++ b/src/message.cpp @@ -346,13 +346,17 @@ void MessageIter::copy_data(MessageIter &to) debug_log("copying compound type: %c[%s]", from.type(), sig); MessageIter to_container(to.msg()); - dbus_message_iter_open_container + dbus_bool_t ret = dbus_message_iter_open_container ( (DBusMessageIter *) & (to._iter), from.type(), - from.type() == DBUS_TYPE_VARIANT ? NULL : sig, + (from.type() == DBUS_TYPE_VARIANT || from.type() == DBUS_TYPE_ARRAY) ? sig : NULL, (DBusMessageIter *) & (to_container._iter) ); + if (!ret) + { + throw ErrorNoMemory("Unable to append container"); + } from_container.copy_data(to_container); to.close_container(to_container); |