From bf38f4382427631276759ad93966ee55921b5a90 Mon Sep 17 00:00:00 2001 From: walon Date: Thu, 22 May 2025 19:44:13 +0800 Subject: [PATCH] fix: fix bug of GenericArgumentContext that inflate ByRef, SZArray to Ptr. --- .../Editor/Utils/GenericArgumentContext.cs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/com.code-philosophy.obfuz/Editor/Utils/GenericArgumentContext.cs b/com.code-philosophy.obfuz/Editor/Utils/GenericArgumentContext.cs index a9f89be..297c91a 100644 --- a/com.code-philosophy.obfuz/Editor/Utils/GenericArgumentContext.cs +++ b/com.code-philosophy.obfuz/Editor/Utils/GenericArgumentContext.cs @@ -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 args, uint number, bool isTypeVar) + private TypeSig Resolve(List 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]; } }