From 50711591e0a9453bf2f464f98bd4a4bd488b15f0 Mon Sep 17 00:00:00 2001 From: olivato Date: Tue, 1 Sep 2026 16:43:30 +0100 Subject: [PATCH] Reset the dnlib TypeDef find cache after reordering a module --- Editor/ObfusPasses/SymbolObfus/MemberReorder.cs | 1 + Tests~/MemberReorder/Main.cs | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/Editor/ObfusPasses/SymbolObfus/MemberReorder.cs b/Editor/ObfusPasses/SymbolObfus/MemberReorder.cs index 9701772..9a842cf 100644 --- a/Editor/ObfusPasses/SymbolObfus/MemberReorder.cs +++ b/Editor/ObfusPasses/SymbolObfus/MemberReorder.cs @@ -67,6 +67,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus Reorder(type.Properties, p => !_renamePolicy.NeedRename(p)); Reorder(type.Events, e => !_renamePolicy.NeedRename(e)); } + mod.ResetTypeDefFindCache(); } } diff --git a/Tests~/MemberReorder/Main.cs b/Tests~/MemberReorder/Main.cs index 964264e..d66473b 100644 --- a/Tests~/MemberReorder/Main.cs +++ b/Tests~/MemberReorder/Main.cs @@ -88,7 +88,13 @@ static class Program var before = Snapshot(Load(dll)); var mod1 = Load(dll); + mod1.EnableTypeDefFindCache = true; + var primed = mod1.Find("Fx.Plain01", false); + var primedEnumerator = mod1.GetTypes().GetEnumerator(); + primedEnumerator.MoveNext(); new MemberReorder(1234, new AllowAll()).Process(new List { mod1 }); + Check(primed != null && mod1.Find("Fx.Plain01", false) != null + && mod1.Find("Fx2.PlainHost", false) != null, "TypeDef find cache still resolves after reordering"); var after1 = Snapshot(mod1); var mod2 = Load(dll);