Reset the dnlib TypeDef find cache after reordering a module

pull/36/head
olivato 2026-09-01 16:43:30 +01:00
parent 46b2e0c54e
commit 50711591e0
2 changed files with 7 additions and 0 deletions

View File

@ -67,6 +67,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
Reorder(type.Properties, p => !_renamePolicy.NeedRename(p));
Reorder(type.Events, e => !_renamePolicy.NeedRename(e));
}
mod.ResetTypeDefFindCache();
}
}

View File

@ -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<ModuleDef> { 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);