summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/glib/Makefile.am4
-rw-r--r--include/dbus-c++/pipe.h2
-rw-r--r--src/message.cpp8
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);