aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/v4/qv4irbuilder.cpp
diff options
context:
space:
mode:
authorMatthew Vogt <matthew.vogt@nokia.com>2012-03-23 14:16:43 +1000
committerQt by Nokia <qt-info@nokia.com>2012-08-27 05:17:13 +0200
commit965588737321d10fd1fbca3f89b4c6257b7b5d47 (patch)
tree95d069b6ce910c4f8bf8f71d50bebc4fe35a6b1f /src/qml/qml/v4/qv4irbuilder.cpp
parent4a161cfa0cf9167b575bdf7ff5685b9bf17c6960 (diff)
Restrict v8 property lookup to the execution context
When resolving property names, only properties known to the current context of execution should be available. If a property name has been overriden by a component extension, code executing in the context of the base component should resolve the property name to the property available inside the base component or its bases. Task-number: QTBUG-24891 Change-Id: I9687cc28e108226d5a939627a901c8254344b598 Reviewed-by: Michael Brasser <michael.brasser@nokia.com> Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/qml/qml/v4/qv4irbuilder.cpp')
-rw-r--r--src/qml/qml/v4/qv4irbuilder.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/qml/qml/v4/qv4irbuilder.cpp b/src/qml/qml/v4/qv4irbuilder.cpp
index 37d71f1941..45e3a72986 100644
--- a/src/qml/qml/v4/qv4irbuilder.cpp
+++ b/src/qml/qml/v4/qv4irbuilder.cpp
@@ -466,7 +466,7 @@ bool QV4IRBuilder::visit(AST::IdentifierExpression *ast)
QQmlPropertyCache *cache = m_expression->context->synthCache;
if (!cache) cache = m_expression->context->metatype;
- QQmlPropertyData *data = cache->property(name);
+ QQmlPropertyData *data = cache->property(name, 0, 0);
if (data && data->hasRevision()) {
if (qmlVerboseCompiler())
@@ -486,7 +486,7 @@ bool QV4IRBuilder::visit(AST::IdentifierExpression *ast)
QQmlPropertyCache *cache = m_expression->component->synthCache;
if (!cache) cache = m_expression->component->metatype;
- QQmlPropertyData *data = cache->property(name);
+ QQmlPropertyData *data = cache->property(name, 0, 0);
if (data && data->hasRevision()) {
if (qmlVerboseCompiler())
@@ -612,7 +612,7 @@ bool QV4IRBuilder::visit(AST::FieldMemberExpression *ast)
<< (*baseName->id + QLatin1Char('.') + ast->name.toString());
} else if(const QMetaObject *attachedMeta = baseName->declarativeType->attachedPropertiesType()) {
QQmlPropertyCache *cache = m_engine->cache(attachedMeta);
- QQmlPropertyData *data = cache->property(name);
+ QQmlPropertyData *data = cache->property(name, 0, 0);
if (!data || data->isFunction())
return false; // Don't support methods (or non-existing properties ;)
@@ -647,7 +647,7 @@ bool QV4IRBuilder::visit(AST::FieldMemberExpression *ast)
} else {
QQmlPropertyCache *cache = baseName->meta.propertyCache(m_engine);
if (!cache) return false;
- QQmlPropertyData *data = cache->property(name);
+ QQmlPropertyData *data = cache->property(name, 0, 0);
if (!data || data->isFunction())
return false; // Don't support methods (or non-existing properties ;)
@@ -666,7 +666,7 @@ bool QV4IRBuilder::visit(AST::FieldMemberExpression *ast)
QQmlPropertyCache *cache =
idObject->synthCache?idObject->synthCache:idObject->metatype;
- QQmlPropertyData *data = cache->property(name);
+ QQmlPropertyData *data = cache->property(name, 0, 0);
if (!data || data->isFunction())
return false; // Don't support methods (or non-existing properties ;)
@@ -690,7 +690,7 @@ bool QV4IRBuilder::visit(AST::FieldMemberExpression *ast)
if (!cache)
return false;
- if (QQmlPropertyData *data = cache->property(name)) {
+ if (QQmlPropertyData *data = cache->property(name, 0, 0)) {
if (!baseName->property->isFinal() || !data->isFinal())
_invalidatable = true;