From 3d3cde906bba262df385a02aea3f1e6e5f178f87 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sun, 17 May 2020 06:58:03 -0700 Subject: [PATCH] Fixed zeroing of paramdecl in lambdas --- IDEHelper/Compiler/BfAst.h | 11 +++++++++++ IDEHelper/Compiler/BfExprEvaluator.cpp | 1 + 2 files changed, 12 insertions(+) diff --git a/IDEHelper/Compiler/BfAst.h b/IDEHelper/Compiler/BfAst.h index 0989cd58..1276ba63 100644 --- a/IDEHelper/Compiler/BfAst.h +++ b/IDEHelper/Compiler/BfAst.h @@ -1399,6 +1399,17 @@ public: val->InitWithTypeId(T::sTypeInfo.mTypeId); return val; } + + template + static void Zero(T* val) + { +#ifdef BF_AST_COMPACT + memset((uint8*)val + offsetof(T, mAstInfo), 0, sizeof(T) - offsetof(T, mAstInfo)); +#else + memset((uint8*)val + offsetof(T, mTriviaStart), 0, sizeof(T) - offsetof(T, mTriviaStart)); +#endif + val->InitWithTypeId(T::sTypeInfo.mTypeId); + } #endif }; #ifdef BF_AST_DO_IMPL diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 6d2226d5..6317b2cb 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -10058,6 +10058,7 @@ BfLambdaInstance* BfExprEvaluator::GetLambdaInstance(BfLambdaBindExpression* lam BfParameterDef* paramDef = new BfParameterDef(); paramDef->mParamDeclaration = tempParamDecls.Alloc(); + BfAstNode::Zero(paramDef->mParamDeclaration); BfLocalVariable* localVar = new BfLocalVariable(); if (paramIdx < (int)lambdaBindExpr->mParams.size())