summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@trolltech.com>2006-05-07 09:36:19 +0000
committerThiago Macieira <thiago.macieira@trolltech.com>2006-05-07 09:36:19 +0000
commit5771b151d54cd79a292390c86c9c6808ca81ded1 (patch)
treedbfa3ae9bb729572165b65674239d4dd9d3eece9
parent96af5cec84b49d1e7b6e8c012924f9e6b5aefb7d (diff)
* 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.
-rw-r--r--ChangeLog7
-rw-r--r--qt/qdbusmarshall.cpp10
2 files changed, 11 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 1deae9d..a0a485f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+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:
diff --git a/qt/qdbusmarshall.cpp b/qt/qdbusmarshall.cpp
index 3420215..8d80152 100644
--- a/qt/qdbusmarshall.cpp
+++ b/qt/qdbusmarshall.cpp
@@ -61,8 +61,7 @@ inline QVariant qFetchList(DBusMessageIter *arrayIt)
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 {
@@ -78,8 +77,7 @@ static QStringList qFetchStringList(DBusMessageIter *arrayIt)
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 {
@@ -157,7 +155,7 @@ static QVariant qFetchParameter(DBusMessageIter *it)
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;
@@ -179,7 +177,7 @@ static QVariant qFetchParameter(DBusMessageIter *it)
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));