Assert instead of crashing
authorAlan Alpert <aalpert@blackberry.com>
Wed, 15 May 2013 22:50:22 +0000 (15:50 -0700)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 16 May 2013 17:04:30 +0000 (19:04 +0200)
Using a singleton (at least a QJSValue one) improperly leads to a crash.

Assert with an explanatory comment is a low-cost improvement until
better capitalization checking is implemented.

Task-number: QTBUG-30090
Change-Id: I237a1dd2aab743ae1f09e8d653aa5aeb4bd0240f
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
src/qml/qml/v4/qv4irbuilder.cpp

index 4aa257d..d217a01 100644 (file)
@@ -638,6 +638,10 @@ bool QV4IRBuilder::visit(AST::FieldMemberExpression *ast)
                     QByteArray utf8Name = name.toUtf8();
                     const char *enumName = utf8Name.constData();
 
+                    //Happens in some cases where they make properties with uppercase names
+                    Q_ASSERT_X(baseName->meta.propertyCache(m_engine), "QML compiler",
+                            QString("Error resolving enum \"%1\"").arg(name).toLatin1().constData());
+
                     const QMetaObject *meta = baseName->meta.propertyCache(m_engine)->firstCppMetaObject();
                     bool found = false;
                     for (int ii = 0; !found && ii < meta->enumeratorCount(); ++ii) {