From d0d60f9a6dfbe4c4f3f6c7788edf546b36a01da5 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 17 Aug 2024 19:43:18 +0200 Subject: [PATCH] Fix #3263: Properly handle assemblies that do not provide a type system in DerivedTypesTreeNode. --- ILSpy/TreeNodes/DerivedTypesTreeNode.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ILSpy/TreeNodes/DerivedTypesTreeNode.cs b/ILSpy/TreeNodes/DerivedTypesTreeNode.cs index 7a0b7accd..d3fd99268 100644 --- a/ILSpy/TreeNodes/DerivedTypesTreeNode.cs +++ b/ILSpy/TreeNodes/DerivedTypesTreeNode.cs @@ -17,7 +17,6 @@ // DEALINGS IN THE SOFTWARE. using System.Collections.Generic; -using System.Linq; using System.Threading; using ICSharpCode.Decompiler; @@ -66,12 +65,16 @@ namespace ICSharpCode.ILSpy.TreeNodes { var definitionMetadata = type.ParentModule.MetadataFile.Metadata; var metadataToken = (SRM.TypeDefinitionHandle)type.MetadataToken; - var assemblies = list.GetAllAssemblies().GetAwaiter().GetResult() - .Select(node => node.GetMetadataFileOrNull()).Where(asm => asm != null).ToArray(); - foreach (var module in assemblies) + var assemblies = list.GetAllAssemblies().GetAwaiter().GetResult(); + foreach (var loadedAssembly in assemblies) { + var module = loadedAssembly.GetMetadataFileOrNull(); + if (module == null) + continue; var metadata = module.Metadata; - var assembly = (MetadataModule)module.GetTypeSystemOrNull().MainModule; + var assembly = module.GetTypeSystemOrNull()?.MainModule as MetadataModule; + if (assembly != null) + continue; foreach (var h in metadata.TypeDefinitions) { cancellationToken.ThrowIfCancellationRequested();