Browse Source

Fixed zero-sized sized array foreach

Brian Fiete 4 years ago
parent
commit
966b740e6c
1 changed files with 3 additions and 5 deletions
  1. 3 5
      IDEHelper/Compiler/BfStmtEvaluator.cpp

+ 3 - 5
IDEHelper/Compiler/BfStmtEvaluator.cpp

@@ -6200,14 +6200,12 @@ void BfModule::Visit(BfForEachStatement* forEachStmt)
 	deferredLocalAssignData.mVarIdBarrier = mCurMethodState->GetRootMethodState()->mCurLocalVarId;
 	SetAndRestoreValue<BfDeferredLocalAssignData*> prevDLA(mCurMethodState->mDeferredLocalAssignData, &deferredLocalAssignData);
 
+	SetAndRestoreValue<bool> prevIgnoreWrites(mBfIRBuilder->mIgnoreWrites);
+
 	if ((target.mType->IsSizedArray()) && (((BfSizedArrayType*)target.mType)->mElementCount == 0))
 	{
 		EmitEnsureInstructionAt();
-		SetAndRestoreValue<bool> ignoreWrites(mBfIRBuilder->mIgnoreWrites, true);
-		if (forEachStmt->mEmbeddedStatement != NULL)
-			VisitEmbeddedStatement(forEachStmt->mEmbeddedStatement);
-		RestoreScopeState();
-		return;
+		mBfIRBuilder->mIgnoreWrites = true;
 	}
 
 	BfIdentifierNode* nameNode = NULL;