Make non-threaded VME interpreter work again
authorKent Hansen <kent.hansen@nokia.com>
Tue, 15 Nov 2011 08:21:24 +0000 (09:21 +0100)
committerQt by Nokia <qt-info@nokia.com>
Wed, 16 Nov 2011 08:07:49 +0000 (09:07 +0100)
625bb0520708879ef5d281ab0c62fc7ad5415441 added a statement
to the QML_NEXT_INSTR macro without turning the macro
definition into a block. This caused statements like

if (foo)
    QML_NEXT_INSTR(bar);

to unexpectedly break from the switch (the second statement
in the QML_NEXT_INSTR expansion is "break").

Change-Id: I384280eaea1dd1f3b940be67d589f3a03d9e8685
Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
src/declarative/qml/qdeclarativevme.cpp

index 52095e3..e39a7c9 100644 (file)
@@ -226,9 +226,11 @@ static void removeBindingOnProperty(QObject *o, int index)
     case QDeclarativeInstruction::I: \
     QML_BEGIN_INSTR_COMMON(I)
 
-#  define QML_NEXT_INSTR(I) \
+#  define QML_NEXT_INSTR(I) \
     if (watcher.hasRecursed()) return 0; \
-    break;
+    break; \
+    }
+
 #  define QML_END_INSTR(I) \
     if (watcher.hasRecursed() || interrupt.shouldInterrupt()) return 0; \
     } break;