diff options
Diffstat (limited to 'src/qml/jsruntime/qv4objectiterator_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4objectiterator_p.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4objectiterator_p.h b/src/qml/jsruntime/qv4objectiterator_p.h index 8d7b5512d4..0a5bcfc7ed 100644 --- a/src/qml/jsruntime/qv4objectiterator_p.h +++ b/src/qml/jsruntime/qv4objectiterator_p.h @@ -75,7 +75,8 @@ struct Q_QML_EXPORT ObjectIterator object = static_cast<Object *>(scope.alloc()); this->flags = flags; object->setM(o ? o->m() : nullptr); - iterator = object->ownPropertyKeys(); + if (o) + iterator = object->ownPropertyKeys(object); } ~ObjectIterator() { @@ -93,6 +94,7 @@ namespace Heap { #define ForInIteratorObjectMembers(class, Member) \ Member(class, Pointer, Object *, object) \ Member(class, Pointer, Object *, current) \ + Member(class, Pointer, Object *, target) \ Member(class, NoMark, OwnPropertyKeyIterator *, iterator) DECLARE_HEAP_OBJECT(ForInIteratorObject, Object) { @@ -130,7 +132,10 @@ void Heap::ForInIteratorObject::init(QV4::Object *o) return; object.set(o->engine(), o->d()); current.set(o->engine(), o->d()); - iterator = o->ownPropertyKeys(); + Scope scope(o); + ScopedObject obj(scope); + iterator = o->ownPropertyKeys(obj.getRef()); + target.set(o->engine(), obj->d()); } |