From b1432782a821f621b953484bb9941cb3d89ba104 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 20 Jan 2021 13:18:03 -0800 Subject: [PATCH] Fixed foreach ref iteration with sized arrays --- IDEHelper/Compiler/BfStmtEvaluator.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/IDEHelper/Compiler/BfStmtEvaluator.cpp b/IDEHelper/Compiler/BfStmtEvaluator.cpp index 39528f87..d6804350 100644 --- a/IDEHelper/Compiler/BfStmtEvaluator.cpp +++ b/IDEHelper/Compiler/BfStmtEvaluator.cpp @@ -6572,6 +6572,8 @@ void BfModule::Visit(BfForEachStatement* forEachStmt) { target = MakeAddressable(target); arrayItem = BfTypedValue(CreateIndexedValue(arrayType->mElementType, target.mValue, itrVal, true), arrayType->mElementType, true); + if (isRefExpression) + arrayItem = BfTypedValue(arrayItem.mValue, CreateRefType(arrayItem.mType)); } arrayItem = Cast(forEachStmt->mCollectionExpression, arrayItem, varType, BfCastFlags_Explicit); if ((arrayItem) && (!arrayItem.mValue.IsFake()))