diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/corelib/serialization/qjsonarray.cpp | 1 | ||||
| -rw-r--r-- | src/corelib/serialization/qjsonobject.cpp | 1 | ||||
| -rw-r--r-- | src/corelib/serialization/qjsonvalue.cpp | 22 |
3 files changed, 14 insertions, 10 deletions
diff --git a/src/corelib/serialization/qjsonarray.cpp b/src/corelib/serialization/qjsonarray.cpp index 94277db9224..167b6a3a773 100644 --- a/src/corelib/serialization/qjsonarray.cpp +++ b/src/corelib/serialization/qjsonarray.cpp @@ -119,7 +119,6 @@ QJsonArray::QJsonArray() = default; QJsonArray::QJsonArray(QCborContainerPrivate *array) : a(array) { - Q_ASSERT(array); } /*! diff --git a/src/corelib/serialization/qjsonobject.cpp b/src/corelib/serialization/qjsonobject.cpp index ad217b419e3..a3e5bd695e5 100644 --- a/src/corelib/serialization/qjsonobject.cpp +++ b/src/corelib/serialization/qjsonobject.cpp @@ -103,7 +103,6 @@ QJsonObject::QJsonObject() = default; QJsonObject::QJsonObject(QCborContainerPrivate *object) : o(object) { - Q_ASSERT(o); } /*! diff --git a/src/corelib/serialization/qjsonvalue.cpp b/src/corelib/serialization/qjsonvalue.cpp index be982f82db7..a92677d19df 100644 --- a/src/corelib/serialization/qjsonvalue.cpp +++ b/src/corelib/serialization/qjsonvalue.cpp @@ -708,11 +708,14 @@ QString QJsonValue::toString() const */ QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const { - const auto dd = QJsonPrivate::Value::container(value); - const auto n = QJsonPrivate::Value::valueHelper(value); - if (value.type() != QCborValue::Array || n >= 0 || !dd) + if (!isArray()) return defaultValue; - + QCborContainerPrivate *dd = nullptr; + const auto n = QJsonPrivate::Value::valueHelper(value); + const auto container = QJsonPrivate::Value::container(value); + Q_ASSERT(n == -1 || container == nullptr); + if (n < 0) + dd = container; return QJsonArray(dd); } @@ -735,11 +738,14 @@ QJsonArray QJsonValue::toArray() const */ QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const { - const auto dd = QJsonPrivate::Value::container(value); - const auto n = QJsonPrivate::Value::valueHelper(value); - if (value.type() != QCborValue::Map || n >= 0 || !dd) + if (!isObject()) return defaultValue; - + QCborContainerPrivate *dd = nullptr; + const auto container = QJsonPrivate::Value::container(value); + const auto n = QJsonPrivate::Value::valueHelper(value); + Q_ASSERT(n == -1 || container == nullptr); + if (n < 0) + dd = container; return QJsonObject(dd); } |
