diff options
-rw-r--r-- | src/v4/qv4internalclass.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/v4/qv4internalclass.cpp b/src/v4/qv4internalclass.cpp index d062e8d581..b192459117 100644 --- a/src/v4/qv4internalclass.cpp +++ b/src/v4/qv4internalclass.cpp @@ -99,17 +99,14 @@ void InternalClass::removeMember(Object *object, uint id) } // create a new class and add it to the tree - InternalClass *newClass = new InternalClass(*this); - newClass->propertyTable.remove(id); - newClass->nameMap.remove(propIdx); - --newClass->size; - for (QHash<uint, uint>::iterator it = newClass->propertyTable.begin(); it != newClass->propertyTable.end(); ++it) { - if ((*it) > propIdx) - --(*it); + object->internalClass = engine->emptyClass; + for (int i = 0; i < nameMap.size(); ++i) { + if (i == propIdx) + continue; + object->internalClass->getOrAddMember(object, nameMap.at(i)); } - transitions.insert(toRemove, newClass); - object->internalClass = newClass; + transitions.insert(toRemove, object->internalClass); } uint InternalClass::find(String *string) |