diff options
Diffstat (limited to 'src/corelib/serialization/qjsonvalue.cpp')
-rw-r--r-- | src/corelib/serialization/qjsonvalue.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/corelib/serialization/qjsonvalue.cpp b/src/corelib/serialization/qjsonvalue.cpp index 29c29184c1..0b11907e68 100644 --- a/src/corelib/serialization/qjsonvalue.cpp +++ b/src/corelib/serialization/qjsonvalue.cpp @@ -705,10 +705,13 @@ QString QJsonValue::toString() const */ QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const { - if (t != QCborValue::Array || n >= 0 || !d) + if (!isArray()) return defaultValue; - - return QJsonArray(d.data()); + QCborContainerPrivate *dd = nullptr; + Q_ASSERT(n == -1 || d == nullptr); + if (n < 0) + dd = d.data(); + return QJsonArray(dd); } /*! @@ -730,10 +733,13 @@ QJsonArray QJsonValue::toArray() const */ QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const { - if (t != QCborValue::Map || n >= 0 || !d) + if (!isObject()) return defaultValue; - - return QJsonObject(d.data()); + QCborContainerPrivate *dd = nullptr; + Q_ASSERT(n == -1 || d == nullptr); + if (n < 0) + dd = d.data(); + return QJsonObject(dd); } /*! |