From f9bb9e84e75959f6a0bf17d3fbe38087d89b5cbf Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sun, 12 Sep 2021 18:22:52 -0700 Subject: [PATCH] Scope fix --- IDEHelper/Compiler/BfStmtEvaluator.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfStmtEvaluator.cpp b/IDEHelper/Compiler/BfStmtEvaluator.cpp index e4a598c1..be283194 100644 --- a/IDEHelper/Compiler/BfStmtEvaluator.cpp +++ b/IDEHelper/Compiler/BfStmtEvaluator.cpp @@ -3409,9 +3409,13 @@ void BfModule::VisitCodeBlock(BfBlock* block) if ((exprEvaluator->mResult) && (!exprEvaluator->mResult.mType->IsValuelessType()) && (!exprEvaluator->mResult.IsAddr())) { + auto useScope = mCurMethodState->mCurScope; + if ((useScope != NULL) && (useScope->mPrevScope != NULL)) + useScope = useScope->mPrevScope; + FixIntUnknown(exprEvaluator->mResult, exprEvaluator->mExpectingType); // We need to make sure we don't retain any values through the scope's ValueScopeHardEnd - and extend alloca through previous scope - SetAndRestoreValue prevScope(mCurMethodState->mCurScope, mCurMethodState->mCurScope->mPrevScope); + SetAndRestoreValue prevScope(mCurMethodState->mCurScope, useScope); exprEvaluator->mResult = MakeAddressable(exprEvaluator->mResult); } }