Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Köplinger <alex.koeplinger@outlook.com>2017-05-19 13:59:00 +0300
committerGitHub <noreply@github.com>2017-05-19 13:59:00 +0300
commit3637f8cddf52608a6f7f865ab8e7419c8d98e851 (patch)
tree70e8c7366877a4ffb7285e88f129f631504dfcbe /mcs/class/Mono.CodeContracts
parent087316c833c53a184944558c53caf33c27214b7d (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.cs43
-rw-r--r--mcs/class/Mono.CodeContracts/Mono.CodeContracts.Static.AST/AssemblyNode.cs2
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);