diff options
author | Nicolas Arnaud-Cormos <nicolas.arnaud-cormos.qnx@kdab.com> | 2012-05-15 19:02:42 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-25 10:15:46 +0200 |
commit | a3a7553dd52a90a95cfeef80d36b1fd671b335b2 (patch) | |
tree | 0465e36ac5cccbfc973dae80dc3b3b1ed5a5cc78 | |
parent | 8f22e4bed8973758ef175f4d5d7f725009db9eb6 (diff) | |
download | qt4-tools-a3a7553dd52a90a95cfeef80d36b1fd671b335b2.tar.gz |
Fix crash when using aliases and variants
Right now, the parser crash when using id.variant.property for an alias.
The current patch fix the crash, and it displays an error message in
the console now (like QtQuick 2).
Task-number: QTBUG-25341
Change-Id: I5e2c13f487655fd2b90129c5693f5daf3f77984b
Reviewed-by: Matthew Vogt <matthew.vogt@nokia.com>
4 files changed, 12 insertions, 1 deletions
diff --git a/src/declarative/qml/qdeclarativevaluetype_p.h b/src/declarative/qml/qdeclarativevaluetype_p.h index 5c2cda7f50..66665328ad 100644 --- a/src/declarative/qml/qdeclarativevaluetype_p.h +++ b/src/declarative/qml/qdeclarativevaluetype_p.h @@ -92,7 +92,7 @@ public: static void registerValueTypes(); QDeclarativeValueType *operator[](int idx) const { - if (idx >= (int)QVariant::UserType) return 0; + if (idx < 0 || idx >= (int)QVariant::UserType) return 0; else return valueTypes[idx]; } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.11.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.11.errors.txt new file mode 100644 index 0000000000..b94e92c2d4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.11.errors.txt @@ -0,0 +1 @@ +8:25:Invalid alias location diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.11.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.11.qml new file mode 100644 index 0000000000..25efe286cd --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.11.qml @@ -0,0 +1,9 @@ +import QtQuick 1.0 + +QtObject { + id: main + property variant v: Text{ + text: "variant text" + } + property alias foo: main.v.text +} diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index bfc0a5f164..c8f26d5934 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -385,6 +385,7 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("invalidAlias.8") << "invalidAlias.8.qml" << "invalidAlias.8.errors.txt" << false; QTest::newRow("invalidAlias.9") << "invalidAlias.9.qml" << "invalidAlias.9.errors.txt" << false; QTest::newRow("invalidAlias.10") << "invalidAlias.10.qml" << "invalidAlias.10.errors.txt" << false; + QTest::newRow("invalidAlias.11") << "invalidAlias.11.qml" << "invalidAlias.11.errors.txt" << false; QTest::newRow("invalidAttachedProperty.1") << "invalidAttachedProperty.1.qml" << "invalidAttachedProperty.1.errors.txt" << false; QTest::newRow("invalidAttachedProperty.2") << "invalidAttachedProperty.2.qml" << "invalidAttachedProperty.2.errors.txt" << false; |