diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2012-04-05 11:35:09 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-11 16:09:06 +0200 |
commit | eff344ab8a509996cab491347aed4a4d8ea5b2ab (patch) | |
tree | 4e07e4e57532925b93358a42a987074a001b4118 /src/corelib/json/qjsonvalue.cpp | |
parent | 1ec7843856a40752ffcb668f608611887937a242 (diff) |
Don't crash when comparing values containing empty arrays/objects
Task-number: QTBUG-25164
Change-Id: I1fa00e359ef3583b9a7136bb888cdf5e1c3e75ac
Reviewed-by: Jamey Hicks <jamey.hicks@nokia.com>
Diffstat (limited to 'src/corelib/json/qjsonvalue.cpp')
-rw-r--r-- | src/corelib/json/qjsonvalue.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/corelib/json/qjsonvalue.cpp b/src/corelib/json/qjsonvalue.cpp index b4a689da60..7e8fdf8221 100644 --- a/src/corelib/json/qjsonvalue.cpp +++ b/src/corelib/json/qjsonvalue.cpp @@ -448,9 +448,17 @@ bool QJsonValue::operator==(const QJsonValue &other) const case String: return toString() == other.toString(); case Array: + if (base == other.base) + return true; + if (!base || !other.base) + return false; return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base)) == QJsonArray(other.d, static_cast<QJsonPrivate::Array *>(other.base)); case Object: + if (base == other.base) + return true; + if (!base || !other.base) + return false; return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base)) == QJsonObject(other.d, static_cast<QJsonPrivate::Object *>(other.base)); } |