diff options
| author | Ulf Hermann <ulf.hermann@qt.io> | 2022-06-30 17:45:07 +0200 |
|---|---|---|
| committer | Ulf Hermann <ulf.hermann@qt.io> | 2022-07-05 19:50:28 +0200 |
| commit | af335a89bd2f8b41c059c1467bac55fdaf4f2dc0 (patch) | |
| tree | 279aafd7999b8672d1a08cbf366dd7724f2b7dfb /src/qmlcompiler/qqmljsfunctioninitializer.cpp | |
| parent | 7d36ec0bd9cd4747dbf33e92b8188fe25c295b88 (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.cpp | 6 |
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(); |
