diff options
-rw-r--r-- | examples/glib/Makefile.am | 4 | ||||
-rw-r--r-- | include/dbus-c++/pipe.h | 2 | ||||
-rw-r--r-- | src/message.cpp | 8 |
3 files changed, 10 insertions, 4 deletions
diff --git a/examples/glib/Makefile.am b/examples/glib/Makefile.am index c7017e8..a8f4c3b 100644 --- a/examples/glib/Makefile.am +++ b/examples/glib/Makefile.am @@ -1,6 +1,6 @@ EXTRA_DIST = -AM_CPPFLAGS = -I$(top_srcdir)/include $(gtkmm_CFLAGS) -I$(top_srcdir)/tools +AM_CPPFLAGS = -I$(top_srcdir)/include $(xml_CFLAGS) $(gtkmm_CFLAGS) -I$(top_srcdir)/tools if HAVE_GTKMM noinst_PROGRAMS = dbus-browser @@ -8,7 +8,7 @@ endif dbus_browser_SOURCES = dbus-glue.h dbus-browser.h dbus-browser.cpp xml.cpp dbus_browser_LDADD = $(top_builddir)/src/integration/glib/libdbus-c++-glib-1.la \ - $(top_builddir)/src/libdbus-c++-1.la $(gtkmm_LIBS) + $(top_builddir)/src/libdbus-c++-1.la $(gtkmm_LIBS) $(xml_LIBS) dbus-glue.h: $(top_srcdir)/data/org.freedesktop.DBus.xml $(top_builddir)/tools/dbusxx-xml2cpp $^ --proxy=$@ diff --git a/include/dbus-c++/pipe.h b/include/dbus-c++/pipe.h index d108b73..e599ac0 100644 --- a/include/dbus-c++/pipe.h +++ b/include/dbus-c++/pipe.h @@ -31,6 +31,8 @@ #include <cstdlib> #include <sys/types.h> +#include <sys/types.h> + namespace DBus { 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); |