diff options
author | Maurice Kalinowski <maurice.kalinowski@qt.io> | 2016-09-27 10:31:31 +0200 |
---|---|---|
committer | Maurice Kalinowski <maurice.kalinowski@qt.io> | 2016-09-28 11:21:23 +0000 |
commit | cc5e3da2cf524e88052620eed6b9cfc9c48b8ad4 (patch) | |
tree | 18e2126f647031f38e58ad33310c57258c153578 /src/qml/qml/qqmlvmemetaobject.cpp | |
parent | 53ef0406b70e57c451e89c4bb9a6dcb4c438af86 (diff) |
winrt: Fix crash on ARM in release mode
The compiler seems to mis-optimize the switch/case statements causing a
QString construction to end up in handling a QUrl and behaving
unpredictable from there (crashes for some example).
Change-Id: Idd2b6b64f1f41d0aa9204dd73dfdf7f5d0541798
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlvmemetaobject.cpp')
-rw-r--r-- | src/qml/qml/qqmlvmemetaobject.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp index c8281f02c0..4f13b44fc0 100644 --- a/src/qml/qml/qqmlvmemetaobject.cpp +++ b/src/qml/qml/qqmlvmemetaobject.cpp @@ -608,6 +608,9 @@ QRectF QQmlVMEMetaObject::readPropertyAsRectF(int id) return v->d()->data.value<QRectF>(); } +#if defined(Q_OS_WINRT) && defined(_M_ARM) +#pragma optimize("", off) +#endif int QQmlVMEMetaObject::metaCall(QObject *o, QMetaObject::Call c, int _id, void **a) { Q_ASSERT(o == object); @@ -969,6 +972,9 @@ int QQmlVMEMetaObject::metaCall(QObject *o, QMetaObject::Call c, int _id, void * else return object->qt_metacall(c, _id, a); } +#if defined(Q_OS_WINRT) && defined(_M_ARM) +#pragma optimize("", on) +#endif QV4::ReturnedValue QQmlVMEMetaObject::method(int index) { |