+2006-05-07 Thiago Macieira <thiago.macieira@trolltech.com>
+
+ * qt/qdbusmarshall.cpp: Fix a problem of demarshalling lists
+ and arrays when they had a single element: has_next returns
+ false, even before you read the element. So, instead, check
+ the array length.
+
2006-05-06 Thiago Macieira <thiago.macieira@trolltech.com>
* qt/qdbusmessage.cpp:
DBusMessageIter it;
dbus_message_iter_recurse(arrayIt, &it);
-
- if (!dbus_message_iter_has_next(&it))
+ if (dbus_message_iter_get_array_len(&it) == 0)
return QDBusTypeHelper<QList<QtType> >::toVariant(list);
do {
DBusMessageIter it;
dbus_message_iter_recurse(arrayIt, &it);
-
- if (!dbus_message_iter_has_next(&it))
+ if (dbus_message_iter_get_array_len(&it) == 0)
return list;
do {
DBusMessageIter sub;
dbus_message_iter_recurse(it, &sub);
- if (!dbus_message_iter_has_next(&sub))
+ if (dbus_message_iter_get_array_len(&sub) == 0)
// empty map
return map;
QList<QVariant> list;
DBusMessageIter sub;
dbus_message_iter_recurse(it, &sub);
- if (!dbus_message_iter_has_next(&sub))
+ if (dbus_message_iter_get_array_len(&sub) == 0)
return list;
do {
list.append(qFetchParameter(&sub));