fix: fix bug of GenericArgumentContext that inflate ByRef, SZArray to Ptr.
parent
09fdd3052d
commit
bf38f43824
|
@ -41,9 +41,9 @@ namespace Obfuz.Utils
|
|||
switch (typeSig.ElementType)
|
||||
{
|
||||
case ElementType.Ptr: return new PtrSig(Resolve(typeSig.Next));
|
||||
case ElementType.ByRef: return new PtrSig(Resolve(typeSig.Next));
|
||||
case ElementType.ByRef: return new ByRefSig(Resolve(typeSig.Next));
|
||||
|
||||
case ElementType.SZArray: return new PtrSig(Resolve(typeSig.Next));
|
||||
case ElementType.SZArray: return new SZArraySig(Resolve(typeSig.Next));
|
||||
case ElementType.Array:
|
||||
{
|
||||
var ara = (ArraySig)typeSig;
|
||||
|
@ -53,7 +53,7 @@ namespace Obfuz.Utils
|
|||
case ElementType.Var:
|
||||
{
|
||||
GenericVar genericVar = (GenericVar)typeSig;
|
||||
var newSig = Resolve(typeArgsStack, genericVar.Number, true);
|
||||
var newSig = Resolve(typeArgsStack, genericVar.Number);
|
||||
if (newSig == null)
|
||||
{
|
||||
throw new Exception();
|
||||
|
@ -64,7 +64,7 @@ namespace Obfuz.Utils
|
|||
case ElementType.MVar:
|
||||
{
|
||||
GenericMVar genericVar = (GenericMVar)typeSig;
|
||||
var newSig = Resolve(methodArgsStack, genericVar.Number, true);
|
||||
var newSig = Resolve(methodArgsStack, genericVar.Number);
|
||||
if (newSig == null)
|
||||
{
|
||||
throw new Exception();
|
||||
|
@ -113,13 +113,9 @@ namespace Obfuz.Utils
|
|||
}
|
||||
}
|
||||
|
||||
private TypeSig Resolve(List<TypeSig> args, uint number, bool isTypeVar)
|
||||
private TypeSig Resolve(List<TypeSig> args, uint number)
|
||||
{
|
||||
var typeSig = args[(int)number];
|
||||
var gvar = typeSig as GenericSig;
|
||||
if (gvar is null || gvar.IsTypeVar != isTypeVar)
|
||||
return typeSig;
|
||||
return gvar;
|
||||
return args[(int)number];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue