Browse Source

Thread-safety fix for Cecil when resetting a method body to save memory.

pull/166/head
Daniel Grunwald 15 years ago
parent
commit
f84556b4eb
  1. 12
      Mono.Cecil/Mono.Cecil/MethodDefinition.cs

12
Mono.Cecil/Mono.Cecil/MethodDefinition.cs

@ -133,8 +133,9 @@ namespace Mono.Cecil { @@ -133,8 +133,9 @@ namespace Mono.Cecil {
public MethodBody Body {
get {
if (body != null)
return body;
MethodBody localBody = this.body;
if (localBody != null)
return localBody;
if (!HasBody)
return null;
@ -144,7 +145,12 @@ namespace Mono.Cecil { @@ -144,7 +145,12 @@ namespace Mono.Cecil {
return body = new MethodBody (this);
}
set { body = value; }
set {
// we reset Body to null in ILSpy to save memory; so we need that operation to be thread-safe
lock (Module.SyncRoot) {
body = value;
}
}
}
public bool HasPInvokeInfo {

Loading…
Cancel
Save