Browse Source

#2295: Handle BadImageFormatException in LoadAssembly.

When nuget packages are <40 KB, SRM seems to throw `BadImageFormatException` instead of `PEFileNotSupportedException`.
pull/2308/head
Daniel Grunwald 4 years ago
parent
commit
2f14cde050
  1. 10
      ILSpy/LoadedAssembly.cs

10
ILSpy/LoadedAssembly.cs

@ -62,14 +62,14 @@ namespace ICSharpCode.ILSpy @@ -62,14 +62,14 @@ namespace ICSharpCode.ILSpy
public sealed class LoadResult
{
public PEFile PEFile { get; }
public PEFileNotSupportedException PEFileLoadException { get; }
public Exception PEFileLoadException { get; }
public LoadedPackage Package { get; }
public LoadResult(PEFile peFile)
{
this.PEFile = peFile ?? throw new ArgumentNullException(nameof(peFile));
}
public LoadResult(PEFileNotSupportedException peFileLoadException, LoadedPackage package)
public LoadResult(Exception peFileLoadException, LoadedPackage package)
{
this.PEFileLoadException = peFileLoadException ?? throw new ArgumentNullException(nameof(peFileLoadException));
this.Package = package ?? throw new ArgumentNullException(nameof(package));
@ -299,7 +299,7 @@ namespace ICSharpCode.ILSpy @@ -299,7 +299,7 @@ namespace ICSharpCode.ILSpy
return LoadAssembly(stream, streamOptions);
}
// Read the module from disk
PEFileNotSupportedException loadAssemblyException;
Exception loadAssemblyException;
try
{
using (var fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
@ -311,6 +311,10 @@ namespace ICSharpCode.ILSpy @@ -311,6 +311,10 @@ namespace ICSharpCode.ILSpy
{
loadAssemblyException = ex;
}
catch (BadImageFormatException ex)
{
loadAssemblyException = ex;
}
// If it's not a .NET module, maybe it's a single-file bundle
var bundle = LoadedPackage.FromBundle(fileName);
if (bundle != null)

Loading…
Cancel
Save