From 2e48164ae92db653faedbce25d3f0d5a8503821f Mon Sep 17 00:00:00 2001 From: walon Date: Thu, 31 Jul 2025 12:14:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DEvalStackCalculator=E8=AE=A1?= =?UTF-8?q?=E7=AE=97isinst=E5=92=8Ccastclass=E6=8C=87=E4=BB=A4=E7=9A=84?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=80=BC=E7=9A=84=E7=B1=BB=E5=9E=8B=E6=9C=AA?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E4=B8=BAtoken=E6=89=80=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E7=B1=BB=E5=9E=8B=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/Emit/EvalStackCalculator.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Editor/Emit/EvalStackCalculator.cs b/Editor/Emit/EvalStackCalculator.cs index a7fd4f3..8c5c2c1 100644 --- a/Editor/Emit/EvalStackCalculator.cs +++ b/Editor/Emit/EvalStackCalculator.cs @@ -713,7 +713,10 @@ namespace Obfuz.Emit } case Code.Castclass: { - PushStack(newPushedDatas, (ITypeDefOrRef)inst.Operand); + Assert.IsTrue(stackSize > 0); + var obj = stackDatas[stackSize - 1]; + Assert.IsTrue(obj.type == EvalDataType.Ref); + PushStack(newPushedDatas, new EvalDataTypeWithSig(EvalDataType.Ref, ((ITypeDefOrRef)inst.Operand).ToTypeSig())); break; } case Code.Isinst: @@ -721,7 +724,7 @@ namespace Obfuz.Emit Assert.IsTrue(stackSize > 0); var obj = stackDatas[stackSize - 1]; Assert.IsTrue(obj.type == EvalDataType.Ref); - PushStack(newPushedDatas, obj); + PushStack(newPushedDatas, new EvalDataTypeWithSig(EvalDataType.Ref, ((ITypeDefOrRef)inst.Operand).ToTypeSig())); break; } case Code.Unbox: