From 0a9c43757a602fd85d250ba4c22c0351c6b053cd Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Mon, 5 May 2025 11:44:10 +0200 Subject: [PATCH] Fix reference to value cast --- oscar64/InterCodeGenerator.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/oscar64/InterCodeGenerator.cpp b/oscar64/InterCodeGenerator.cpp index e611c83..42e84e5 100644 --- a/oscar64/InterCodeGenerator.cpp +++ b/oscar64/InterCodeGenerator.cpp @@ -5111,13 +5111,16 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration* break; } - + case EX_TYPECAST: { vr = TranslateExpression(procType, proc, block, exp->mLeft, destack, gotos, breakBlock, continueBlock, inlineMapper); InterInstruction * ins = new InterInstruction(MapLocation(exp, inlineMapper), IC_CONVERSION_OPERATOR); + if (vr.mType->IsReference() && !exp->mDecType->IsReference()) + vr = ToValue(proc, exp, block, inlineMapper, vr); + if (exp->mDecType->mType == DT_TYPE_FLOAT && vr.mType->IsIntegerType()) { vr = Dereference(proc, exp, block, inlineMapper, vr);