summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qmlcompiler.cpp
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-12-18 01:04:50 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-12-18 01:17:20 (GMT)
commit7f0b65bf04f96edf0d39547f499dea1746d69ba3 (patch)
tree7634a5cefce7756f37a825ea067e8a71224ff9fc /src/declarative/qml/qmlcompiler.cpp
parentfd222fa269db8797ad35c23d7298df7c8a81751e (diff)
downloadQt-7f0b65bf04f96edf0d39547f499dea1746d69ba3.zip
Qt-7f0b65bf04f96edf0d39547f499dea1746d69ba3.tar.gz
Qt-7f0b65bf04f96edf0d39547f499dea1746d69ba3.tar.bz2
Fix deferred property bugs
Previously deferred properties would fail if any of the sub objects used bindings or QmlParserStatus. Whoops.
Diffstat (limited to 'src/declarative/qml/qmlcompiler.cpp')
-rw-r--r--src/declarative/qml/qmlcompiler.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/declarative/qml/qmlcompiler.cpp b/src/declarative/qml/qmlcompiler.cpp
index 9147c4a..3f0dd84 100644
--- a/src/declarative/qml/qmlcompiler.cpp
+++ b/src/declarative/qml/qmlcompiler.cpp
@@ -902,6 +902,14 @@ void QmlCompiler::genObjectBody(QmlParser::Object *obj)
int deferIdx = output->bytecode.count();
output->bytecode << defer;
+ QmlInstruction init;
+ init.type = QmlInstruction::Init;
+ init.init.bindingsSize = compileState.bindings.count(); // XXX - bigger than necessary
+ init.init.parserStatusSize = compileState.parserStatusCount; // XXX - bigger than necessary
+ init.init.contextCache = -1;
+ init.init.compiledBinding = -1;
+ output->bytecode << init;
+
foreach(Property *prop, obj->valueProperties) {
if (!prop->isDeferred)
continue;