From ad3c7ce76702806d235c39111926b5bc7e94f774 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Tue, 20 May 2025 06:58:27 +0200 Subject: [PATCH] More protection for foreach failure --- IDEHelper/Compiler/BfStmtEvaluator.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfStmtEvaluator.cpp b/IDEHelper/Compiler/BfStmtEvaluator.cpp index 2e3342bf..0af8a1d5 100644 --- a/IDEHelper/Compiler/BfStmtEvaluator.cpp +++ b/IDEHelper/Compiler/BfStmtEvaluator.cpp @@ -7192,6 +7192,11 @@ void BfModule::Visit(BfForEachStatement* forEachStmt) mBfIRBuilder->CreateBr(endBB); } + else if (!getNextMethodInst) + { + AssertErrorState(); + mBfIRBuilder->CreateBr(endBB); + } else { BfExprEvaluator exprEvaluator(this); @@ -7315,7 +7320,11 @@ void BfModule::Visit(BfForEachStatement* forEachStmt) } else { - if (needsValCopy) + if (nextEmbeddedType->IsVar()) + { + AssertErrorState(); + } + else if (needsValCopy) { auto nextVal = BfTypedValue(mBfIRBuilder->CreateBitCast(nextResult.mValue, mBfIRBuilder->MapType(CreatePointerType(nextEmbeddedType))), nextEmbeddedType, true); if (isRefExpression)