aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmlcompiler/qqmljsfunctioninitializer.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2022-06-30 17:45:07 +0200
committerUlf Hermann <ulf.hermann@qt.io>2022-07-05 19:50:28 +0200
commitaf335a89bd2f8b41c059c1467bac55fdaf4f2dc0 (patch)
tree279aafd7999b8672d1a08cbf366dd7724f2b7dfb /src/qmlcompiler/qqmljsfunctioninitializer.cpp
parent7d36ec0bd9cd4747dbf33e92b8188fe25c295b88 (diff)
QmlCompiler: Initialize registers with undefined where necessary
If we read the initial state of a register, we need to make sure it actually exists at that point. Uninitialized variables are implicitly undefined in JavaScript. Pick-to: 6.4 Task-number: QTBUG-104687 Change-Id: Ide4fe429b10ec28dcf267e7d34c6316355b16baa Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qmlcompiler/qqmljsfunctioninitializer.cpp')
-rw-r--r--src/qmlcompiler/qqmljsfunctioninitializer.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/qmlcompiler/qqmljsfunctioninitializer.cpp b/src/qmlcompiler/qqmljsfunctioninitializer.cpp
index e04a4ef9ee..56d1d25124 100644
--- a/src/qmlcompiler/qqmljsfunctioninitializer.cpp
+++ b/src/qmlcompiler/qqmljsfunctioninitializer.cpp
@@ -97,6 +97,12 @@ void QQmlJSFunctionInitializer::populateSignature(
}
}
+ for (int i = QQmlJSCompilePass::FirstArgument + function->argumentTypes.length();
+ i < context->registerCountInFunction; ++i) {
+ function->registerTypes.append(m_typeResolver->tracked(
+ m_typeResolver->globalType(m_typeResolver->voidType())));
+ }
+
function->addressableScopes = m_typeResolver->objectsById();
function->code = context->code;
function->sourceLocations = context->sourceLocationTable.get();