The following XML file: <node name="/Foo"> <interface name="Foo.Bar"> <method name="BarFoo"> <arg direction="out" type="a{s(g)}" /> </method> </interface> </node> Causes the binding-tool to crash: ** ERROR **: file dbus-gsignature.c: line 154 (_dbus_gtype_from_signature_iter): assertion failed: (dbus_type_is_container (current_type)) This is with CVS as of 20060228 (just after 0.61).
<arg direction="out" type="g" /> is enough to cause the crash.
Created attachment 4785 [details] [review] Stab at something The attached patch causes the following method to be generated: gboolean Foo_Bar_bar_foo (DBusGProxy *proxy, DBusGSignature** OUT_arg0, GError **error) { return dbus_g_proxy_call (proxy, "BarFoo", error, G_TYPE_INVALID, DBUS_TYPE_G_SIGNATURE, OUT_arg0, G_TYPE_INVALID); } Is this okay?
I've discussed this with Ross on Jabber, I'd prefer to see signatures represented as GTypes now that even stuff like structs have parameterised types which describe the contents etc. It avoids un-necessary exposure to D-Bus signatures to the binding user. A related point comes to mind, internally we have functions for converting a GType to a signature and back again: should we add these to the public API?
This was fixed in 0.78. *** This bug has been marked as a duplicate of bug 17797 ***
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.