From 9e8ffe786bc88e41aeae0512613d2a1fe61d5b7d Mon Sep 17 00:00:00 2001 From: Yoshi Askharoun Date: Wed, 7 Feb 2024 09:42:18 -0600 Subject: [PATCH] Deduplicate disassembly imports --- libs/UIX.Asm/Disassembler.cs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/libs/UIX.Asm/Disassembler.cs b/libs/UIX.Asm/Disassembler.cs index 201800d..6fc311b 100644 --- a/libs/UIX.Asm/Disassembler.cs +++ b/libs/UIX.Asm/Disassembler.cs @@ -19,16 +19,14 @@ public class Disassembler public IEnumerable GetImports() { + // Keep track of which namespaces have already been imported, + // and skip self and default UIX namespace + HashSet importedUris = [_loadResult.Uri, "http://schemas.microsoft.com/2007/uix"]; + foreach (var typeImport in _loadResult.ImportTables.TypeImports) { var uri = typeImport.Owner.Uri; - - // Skip default UIX namespace - if (uri == "http://schemas.microsoft.com/2007/uix") - continue; - - // Skip self - if (uri == _loadResult.Uri) + if (importedUris.Contains(uri)) continue; string name = uri; @@ -61,7 +59,6 @@ public class Disassembler var reader = _loadResult.ObjectSection; // Insert a label to mark the start of the object section. - // In the future, this might use a special directive like `.section object` yield return new SectionDirective("object"); while (reader.CurrentOffset < reader.Size)