summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Arnaud-Cormos <nicolas.arnaud-cormos.qnx@kdab.com>2012-05-15 19:02:42 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-25 10:15:46 +0200
commita3a7553dd52a90a95cfeef80d36b1fd671b335b2 (patch)
tree0465e36ac5cccbfc973dae80dc3b3b1ed5a5cc78
parent8f22e4bed8973758ef175f4d5d7f725009db9eb6 (diff)
downloadqt4-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>
-rw-r--r--src/declarative/qml/qdeclarativevaluetype_p.h2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.11.errors.txt1
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.11.qml9
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp1
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;