diff options
Diffstat (limited to 'src/qml/jsruntime/qv4internalclass.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4internalclass.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4internalclass.cpp b/src/qml/jsruntime/qv4internalclass.cpp index b2b1c29e10..602061bb6e 100644 --- a/src/qml/jsruntime/qv4internalclass.cpp +++ b/src/qml/jsruntime/qv4internalclass.cpp @@ -461,7 +461,8 @@ void InternalClass::addMember(QV4::Object *object, PropertyKey id, PropertyAttri { Q_ASSERT(id.isStringOrSymbol()); data.resolve(); - if (object->internalClass()->propertyTable.lookup(id) < object->internalClass()->size) { + PropertyHash::Entry *e = object->internalClass()->propertyTable.lookup(id); + if (e && e->index < object->internalClass()->size) { changeMember(object, id, data, index); return; } @@ -479,7 +480,8 @@ Heap::InternalClass *InternalClass::addMember(PropertyKey identifier, PropertyAt Q_ASSERT(identifier.isStringOrSymbol()); data.resolve(); - if (propertyTable.lookup(identifier) < size) + PropertyHash::Entry *e = propertyTable.lookup(identifier); + if (e && e->index < size) return changeMember(identifier, data, index); return addMemberImpl(identifier, data, index); @@ -530,7 +532,7 @@ void InternalClass::removeChildEntry(InternalClass *child) void InternalClass::removeMember(QV4::Object *object, PropertyKey identifier) { Heap::InternalClass *oldClass = object->internalClass(); - Q_ASSERT(oldClass->propertyTable.lookup(identifier) < oldClass->size); + Q_ASSERT(oldClass->propertyTable.lookup(identifier) && oldClass->propertyTable.lookup(identifier)->index < oldClass->size); Transition temp = { { identifier }, nullptr, Transition::RemoveMember }; Transition &t = object->internalClass()->lookupOrInsertTransition(temp); |