From 0dcc7c4df34ebec61ff8139b722195f9973aef6c Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 22 Feb 2025 10:24:19 -0800 Subject: [PATCH] Fixed mUnassignedFieldFlags handling of fields in extensions --- IDEHelper/Compiler/BfModule.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 293ab76f..223e12e5 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -2297,7 +2297,14 @@ bool BfModule::TryLocalVariableInit(BfLocalVariable* localVar) { if (fieldInstance.mMergedDataIdx != -1) { - int64 checkMask = (int64)1 << fieldInstance.mMergedDataIdx; + int64 checkMask = 1; + if (auto fieldTypeInst = fieldInstance.mResolvedType->ToTypeInstance()) + { + if (fieldTypeInst->IsValueType()) + checkMask = (1 << fieldTypeInst->mMergedFieldDataCount) - 1; + } + checkMask <<= fieldInstance.mMergedDataIdx; + if ((localVar->mUnassignedFieldFlags & checkMask) != 0) { // For fields added in extensions, we automatically initialize those if necessary