diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2018-09-03 14:06:28 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-09-03 12:32:22 +0000 |
commit | c98a3ac57625e14bfcfa7592e2a2549d3a4a5a3d (patch) | |
tree | 0b314781bcf18e5f1f890362eff71caeb288f5ff /src/qml/jsruntime | |
parent | 5b32b7071725e00cad36e9ee97bcd6e886a254b4 (diff) |
Fix crash with ForIn iterators during gc
object and current can be null if the ::init() function does the early
return.
Task-number: QTBUG-70300
Change-Id: I8b0e6832b6ee741602447196d26baa570ad096e3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/jsruntime')
-rw-r--r-- | src/qml/jsruntime/qv4objectiterator.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4objectiterator.cpp b/src/qml/jsruntime/qv4objectiterator.cpp index 8158d8ddd9..3eaf760792 100644 --- a/src/qml/jsruntime/qv4objectiterator.cpp +++ b/src/qml/jsruntime/qv4objectiterator.cpp @@ -128,7 +128,10 @@ DEFINE_OBJECT_VTABLE(ForInIteratorObject); void Heap::ForInIteratorObject::markObjects(Heap::Base *that, MarkStack *markStack) { ForInIteratorObject *o = static_cast<ForInIteratorObject *>(that); - o->object->mark(markStack); + if (o->object) + o->object->mark(markStack); + if (o->current) + o->current->mark(markStack); o->workArea[0].mark(markStack); o->workArea[1].mark(markStack); Object::markObjects(that, markStack); |