Revert "Optimize QJsonObject::operator=="
This reverts commit 862fa24179505ef725ff78bb64bdabd54bd00c95, which attempted to optimize QJsonObject::operator== under the assumption that the entries it holds are lexicographically sorted. They should be, because Object::indexOf() finds them by binary search, but apparently both fromJson(), as well as construction through op[] leave (some) entries unsorted. This behavior should be fixed, because other code relies on sorted entries, too, but until the problem is more fully under- stood, revert the patch to unbreak equality comparisons. Task-number: QTBUG-56843 Change-Id: I5b608c16d1bbcb4f01b75ce93bd58b49ff050be2 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
addf1f45f3
commit
80842959c4
@ -691,8 +691,6 @@ public:
|
|||||||
bool operator >=(const Entry &other) const;
|
bool operator >=(const Entry &other) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline bool operator!=(const Entry &lhs, const Entry &rhs) { return !(lhs == rhs); }
|
|
||||||
|
|
||||||
inline bool Entry::operator >=(const QString &key) const
|
inline bool Entry::operator >=(const QString &key) const
|
||||||
{
|
{
|
||||||
if (value.latinKey)
|
if (value.latinKey)
|
||||||
|
@ -545,8 +545,8 @@ bool QJsonObject::operator==(const QJsonObject &other) const
|
|||||||
|
|
||||||
for (uint i = 0; i < o->length; ++i) {
|
for (uint i = 0; i < o->length; ++i) {
|
||||||
QJsonPrivate::Entry *e = o->entryAt(i);
|
QJsonPrivate::Entry *e = o->entryAt(i);
|
||||||
QJsonPrivate::Entry *oe = other.o->entryAt(i);
|
QJsonValue v(d, o, e->value);
|
||||||
if (*e != *oe || QJsonValue(d, o, e->value) != QJsonValue(other.d, other.o, oe->value))
|
if (other.value(e->key()) != v)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user