diff --git a/ICSharpCode.Decompiler/SRMExtensions.cs b/ICSharpCode.Decompiler/SRMExtensions.cs index 95dcd156f..dff5dcef2 100644 --- a/ICSharpCode.Decompiler/SRMExtensions.cs +++ b/ICSharpCode.Decompiler/SRMExtensions.cs @@ -239,29 +239,37 @@ namespace ICSharpCode.Decompiler if (handle.IsNil) return false; StringHandle nameHandle, namespaceHandle; - switch (handle.Kind) + try { - case HandleKind.TypeReference: - var tr = reader.GetTypeReference((TypeReferenceHandle)handle); - // ignore exported and nested types - if (tr.ResolutionScope.IsNil || tr.ResolutionScope.Kind == HandleKind.TypeReference) - return false; - nameHandle = tr.Name; - namespaceHandle = tr.Namespace; - break; - case HandleKind.TypeDefinition: - var td = reader.GetTypeDefinition((TypeDefinitionHandle)handle); - if (td.IsNested) + switch (handle.Kind) + { + case HandleKind.TypeReference: + var tr = reader.GetTypeReference((TypeReferenceHandle)handle); + // ignore exported and nested types + if (tr.ResolutionScope.IsNil || tr.ResolutionScope.Kind == HandleKind.TypeReference) + return false; + nameHandle = tr.Name; + namespaceHandle = tr.Namespace; + break; + case HandleKind.TypeDefinition: + var td = reader.GetTypeDefinition((TypeDefinitionHandle)handle); + if (td.IsNested) + return false; + nameHandle = td.Name; + namespaceHandle = td.Namespace; + break; + case HandleKind.TypeSpecification: + var ts = reader.GetTypeSpecification((TypeSpecificationHandle)handle); + var blob = reader.GetBlobReader(ts.Signature); + return SignatureIsKnownType(reader, knownType, ref blob); + default: return false; - nameHandle = td.Name; - namespaceHandle = td.Namespace; - break; - case HandleKind.TypeSpecification: - var ts = reader.GetTypeSpecification((TypeSpecificationHandle)handle); - var blob = reader.GetBlobReader(ts.Signature); - return SignatureIsKnownType(reader, knownType, ref blob); - default: - return false; + } + } + catch (BadImageFormatException) + { + // ignore bad metadata when trying to resolve ResolutionScope et al. + return false; } if (knownType.TypeParameterCount == 0) {