diff options
author | Jb Evain <jb@evain.net> | 2016-07-28 06:34:32 +0300 |
---|---|---|
committer | Jb Evain <jb@evain.net> | 2016-07-28 06:34:32 +0300 |
commit | 078f175733cad280973b8dbab8696b452e3844aa (patch) | |
tree | 792254067c58182e498b4fb1f21a7d1d7b41a52a /Mono.Cecil.PE | |
parent | 1b5ce064bb1661312bf8ade3c2d736a9fe452db5 (diff) |
Properly handle ownership of streams used by Cecil
Diffstat (limited to 'Mono.Cecil.PE')
-rw-r--r-- | Mono.Cecil.PE/Image.cs | 4 | ||||
-rw-r--r-- | Mono.Cecil.PE/ImageReader.cs | 14 |
2 files changed, 9 insertions, 9 deletions
diff --git a/Mono.Cecil.PE/Image.cs b/Mono.Cecil.PE/Image.cs index d0fd80d..c85b320 100644 --- a/Mono.Cecil.PE/Image.cs +++ b/Mono.Cecil.PE/Image.cs @@ -20,7 +20,7 @@ namespace Mono.Cecil.PE { sealed class Image : IDisposable { - public Stream Stream; + public Disposable<Stream> Stream; public string FileName; public ModuleKind Kind; @@ -124,7 +124,7 @@ namespace Mono.Cecil.PE { if (section == null) return null; - var reader = new BinaryStreamReader (Stream); + var reader = new BinaryStreamReader (Stream.value); reader.MoveTo (ResolveVirtualAddressInSection (rva, section)); return reader; } diff --git a/Mono.Cecil.PE/ImageReader.cs b/Mono.Cecil.PE/ImageReader.cs index b69cc75..fc6b4fc 100644 --- a/Mono.Cecil.PE/ImageReader.cs +++ b/Mono.Cecil.PE/ImageReader.cs @@ -26,8 +26,8 @@ namespace Mono.Cecil.PE { uint table_heap_offset; - public ImageReader (Stream stream, string file_name) - : base (stream) + public ImageReader (Disposable<Stream> stream, string file_name) + : base (stream.value) { image = new Image (); image.Stream = stream; @@ -704,22 +704,22 @@ namespace Mono.Cecil.PE { } } - public static Image ReadImage (Stream stream, string file_name) + public static Image ReadImage (Disposable<Stream> stream, string file_name) { try { var reader = new ImageReader (stream, file_name); reader.ReadImage (); return reader.image; } catch (EndOfStreamException e) { - throw new BadImageFormatException (stream.GetFileName (), e); + throw new BadImageFormatException (stream.value.GetFileName (), e); } } - public static Image ReadPortablePdb (Stream stream, string file_name) + public static Image ReadPortablePdb (Disposable<Stream> stream, string file_name) { try { var reader = new ImageReader (stream, file_name); - var length = (uint) stream.Length; + var length = (uint) stream.value.Length; reader.image.Sections = new[] { new Section { @@ -734,7 +734,7 @@ namespace Mono.Cecil.PE { reader.ReadMetadata (); return reader.image; } catch (EndOfStreamException e) { - throw new BadImageFormatException (stream.GetFileName (), e); + throw new BadImageFormatException (stream.value.GetFileName (), e); } } } |