aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2018-09-03 14:06:28 +0200
committerLiang Qi <liang.qi@qt.io>2018-09-03 12:32:22 +0000
commitc98a3ac57625e14bfcfa7592e2a2549d3a4a5a3d (patch)
tree0b314781bcf18e5f1f890362eff71caeb288f5ff /src/qml/jsruntime
parent5b32b7071725e00cad36e9ee97bcd6e886a254b4 (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.cpp5
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);