修复EvalStackCalculator计算isinst和castclass指令的返回值的类型未转换为token所引用的类型的bug
parent
9b6e6375f6
commit
2e48164ae9
|
@ -713,7 +713,10 @@ namespace Obfuz.Emit
|
||||||
}
|
}
|
||||||
case Code.Castclass:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case Code.Isinst:
|
case Code.Isinst:
|
||||||
|
@ -721,7 +724,7 @@ namespace Obfuz.Emit
|
||||||
Assert.IsTrue(stackSize > 0);
|
Assert.IsTrue(stackSize > 0);
|
||||||
var obj = stackDatas[stackSize - 1];
|
var obj = stackDatas[stackSize - 1];
|
||||||
Assert.IsTrue(obj.type == EvalDataType.Ref);
|
Assert.IsTrue(obj.type == EvalDataType.Ref);
|
||||||
PushStack(newPushedDatas, obj);
|
PushStack(newPushedDatas, new EvalDataTypeWithSig(EvalDataType.Ref, ((ITypeDefOrRef)inst.Operand).ToTypeSig()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Code.Unbox:
|
case Code.Unbox:
|
||||||
|
|
Loading…
Reference in New Issue