Given the type signature "aa{sv}", the second call to dbus_signature_iter_recurse will set the real sub-iterator to have in_array=TRUE. This means that, after we get the "s", dbus_signature_iter_next returns false and, this, the dict_entry will have only one element. The same behaviour can be seen in any array of array where the second array contains a struct of more than one element or a dict entry. ("aa(iii)", for instance).
Created attachment 4567 [details] [review] Patch fixing the behaviour The attached patch fixes the problem by resetting in_array to FALSE when creating a sub-iterator and by setting it to true when the parent (not nested) iterator is in an array.
Patch looked good. Passed make check. Committed. Fixed in CVS. Thanks.
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.