diff options
author | Alexander Köplinger <alex.koeplinger@outlook.com> | 2017-05-19 13:59:00 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-19 13:59:00 +0300 |
commit | 3637f8cddf52608a6f7f865ab8e7419c8d98e851 (patch) | |
tree | 70e8c7366877a4ffb7285e88f129f631504dfcbe /mcs/class/Mono.CodeContracts | |
parent | 087316c833c53a184944558c53caf33c27214b7d (diff) |
[bcl] Dispose Cecil AssemblyDefinition after usage (#4900)
Follow-up to https://github.com/mono/mono/pull/4899. I audited
all the places in BCL where we made use of Cecil's AssemblyDefinition
and made sure we're properly disposing them and not keeping files
unnecessarily open.
I used InMemory=true in cases where tracking the lifetime would
be complicated. There are also some tests in mcs/tests which I
didn't bother to fix.
Diffstat (limited to 'mcs/class/Mono.CodeContracts')
-rw-r--r-- | mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/Rewriter.cs | 43 | ||||
-rw-r--r-- | mcs/class/Mono.CodeContracts/Mono.CodeContracts.Static.AST/AssemblyNode.cs | 2 |
2 files changed, 23 insertions, 22 deletions
diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/Rewriter.cs b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/Rewriter.cs index 5654252415d..66fb7f232c0 100644 --- a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/Rewriter.cs +++ b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/Rewriter.cs @@ -67,33 +67,34 @@ namespace Mono.CodeContracts.Rewrite { if (options.Debug && options.WritePdbFile) readerParameters.ReadSymbols = true; - var assembly = this.options.Assembly.IsFilename ? + using (var assembly = this.options.Assembly.IsFilename ? AssemblyDefinition.ReadAssembly (options.Assembly.Filename, readerParameters) : - AssemblyDefinition.ReadAssembly (options.Assembly.Streams.Assembly, readerParameters); + AssemblyDefinition.ReadAssembly (options.Assembly.Streams.Assembly, readerParameters)) { - if (this.options.ForceAssemblyRename != null) { - assembly.Name.Name = this.options.ForceAssemblyRename; - } else if (this.options.OutputFile.IsSet && this.options.OutputFile.IsFilename) { - assembly.Name.Name = Path.GetFileNameWithoutExtension(this.options.OutputFile.Filename); - } + if (this.options.ForceAssemblyRename != null) { + assembly.Name.Name = this.options.ForceAssemblyRename; + } else if (this.options.OutputFile.IsSet && this.options.OutputFile.IsFilename) { + assembly.Name.Name = Path.GetFileNameWithoutExtension(this.options.OutputFile.Filename); + } - var output = this.options.OutputFile.IsSet ? this.options.OutputFile : this.options.Assembly; - var writerParameters = new WriterParameters (); - if (options.WritePdbFile) { - if (!options.Debug) { - return RewriterResults.Error ("Must specify -debug if using -writePDBFile."); + var output = this.options.OutputFile.IsSet ? this.options.OutputFile : this.options.Assembly; + var writerParameters = new WriterParameters (); + if (options.WritePdbFile) { + if (!options.Debug) { + return RewriterResults.Error ("Must specify -debug if using -writePDBFile."); + } + + writerParameters.WriteSymbols = true; } - writerParameters.WriteSymbols = true; - } - - PerformRewrite rewriter = new PerformRewrite (this.options); - rewriter.Rewrite (assembly); + PerformRewrite rewriter = new PerformRewrite (this.options); + rewriter.Rewrite (assembly); - if (output.IsFilename) { - assembly.Write (output.Filename, writerParameters); - } else { - assembly.Write (output.Streams.Assembly, writerParameters); + if (output.IsFilename) { + assembly.Write (output.Filename, writerParameters); + } else { + assembly.Write (output.Streams.Assembly, writerParameters); + } } return new RewriterResults (warnings, errors); diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Static.AST/AssemblyNode.cs b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Static.AST/AssemblyNode.cs index 04c7c6e0bac..adc51def4e2 100644 --- a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Static.AST/AssemblyNode.cs +++ b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Static.AST/AssemblyNode.cs @@ -72,7 +72,7 @@ namespace Mono.CodeContracts.Static.AST { public static AssemblyNode ReadAssembly (string filename) { - var readerParameters = new ReaderParameters (); + var readerParameters = new ReaderParameters () { InMemory = true }; AssemblyDefinition definition = AssemblyDefinition.ReadAssembly (filename, readerParameters); return new AssemblyNode (definition); |