From 613aa116f43dcce155fcf0cd5f0313158369491e Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 3 Nov 2021 07:46:54 -0700 Subject: [PATCH] Sized array mangle fixes --- IDEHelper/Compiler/BfMangler.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/IDEHelper/Compiler/BfMangler.cpp b/IDEHelper/Compiler/BfMangler.cpp index 372a6fd3..235c3f19 100644 --- a/IDEHelper/Compiler/BfMangler.cpp +++ b/IDEHelper/Compiler/BfMangler.cpp @@ -584,10 +584,22 @@ void BfGNUMangler::Mangle(MangleContext& mangleContext, StringImpl& name, BfType } else if (type->IsSizedArray()) { - BfSizedArrayType* arrayType = (BfSizedArrayType*)type; - name += StrFormat("A%d_"); - Mangle(mangleContext, name, arrayType->mElementType); - return; + if (type->IsUnknownSizedArrayType()) + { + BfUnknownSizedArrayType* arrayType = (BfUnknownSizedArrayType*)type; + name += "A_"; + Mangle(mangleContext, name, arrayType->mElementType); + name += "_"; + Mangle(mangleContext, name, arrayType->mElementCountSource); + return; + } + else + { + BfSizedArrayType* arrayType = (BfSizedArrayType*)type; + name += StrFormat("A%d_", arrayType->mElementCount); + Mangle(mangleContext, name, arrayType->mElementType); + return; + } } else if (type->IsMethodRef()) { @@ -1714,7 +1726,7 @@ void BfMSMangler::Mangle(MangleContext& mangleContext, StringImpl& name, BfType* name += "?$_ARRAY@"; Mangle(mangleContext, name, arrType->mElementType); - MangleConst(mangleContext, name, arrType->mSize); + MangleConst(mangleContext, name, arrType->mElementCount); name += '@'; } }