diff options
author | Arno Rehn <a.rehn@menlosystems.com> | 2019-05-09 23:26:13 +0200 |
---|---|---|
committer | Milian Wolff <milian.wolff@kdab.com> | 2019-05-15 20:04:28 +0000 |
commit | 1466130070922a6cc55c2a5b724311780a394a13 (patch) | |
tree | 3eee73c565477ddd71f94483a6b152cf013c28cf /src | |
parent | fc891dad209725113f49f42cfd59a5ced6ff89d2 (diff) | |
download | qtwebchannel-1466130070922a6cc55c2a5b724311780a394a13.tar.gz |
Fix generic conversion of list-like values to JSON arrays
Previously, QVariant::toList() was used to convert a QVariant to a
QVariantList. This only works for actual QVariantLists and QStringList,
however. This patch uses QVariant::value<QVariantList>() which works in all
cases.
A better approach would be to extract a QSequentialIterable, but QTBUG-42016
currently prevents this.
Change-Id: I732cc88a6db2ec5d990760364a9db98a52521f6b
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/webchannel/qmetaobjectpublisher.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/webchannel/qmetaobjectpublisher.cpp b/src/webchannel/qmetaobjectpublisher.cpp index 3b2c016..917bbf7 100644 --- a/src/webchannel/qmetaobjectpublisher.cpp +++ b/src/webchannel/qmetaobjectpublisher.cpp @@ -621,7 +621,10 @@ QJsonValue QMetaObjectPublisher::wrapResult(const QVariant &result, QWebChannelA #endif } else if (result.canConvert<QVariantList>()) { // recurse and potentially wrap contents of the array - return wrapList(result.toList(), transport); + // *don't* use result.toList() as that *only* works for QVariantList and QStringList! + // Also, don't use QSequentialIterable (yet), since that seems to trigger QTBUG-42016 + // in certain cases. + return wrapList(result.value<QVariantList>(), transport); } return QJsonValue::fromVariant(result); |