Browse Source

fix NullReferenceException when closing text editor immediately after committing.

4.1
Siegfried Pammer 15 years ago
parent
commit
9eaa1c105b
  1. 7
      src/Main/Base/Project/Src/Editor/IDocumentBaseVersionProvider.cs

7
src/Main/Base/Project/Src/Editor/IDocumentBaseVersionProvider.cs

@ -67,6 +67,9 @@ namespace ICSharpCode.SharpDevelop.Editor
{ {
if (alreadyCalled) { if (alreadyCalled) {
alreadyCalled = false; alreadyCalled = false;
// thread-safety: copy delegate reference into local variable
var actions = this.actions;
if (actions != null)
actions(); actions();
} }
} }
@ -90,12 +93,14 @@ namespace ICSharpCode.SharpDevelop.Editor
public static RepoChangeWatcher AddWatch(string repositoryRoot, Action action) public static RepoChangeWatcher AddWatch(string repositoryRoot, Action action)
{ {
RepoChangeWatcher watcher; RepoChangeWatcher watcher;
lock (watchers) {
if (!watchers.TryGetValue(repositoryRoot, out watcher)) { if (!watchers.TryGetValue(repositoryRoot, out watcher)) {
watcher = new RepoChangeWatcher(repositoryRoot); watcher = new RepoChangeWatcher(repositoryRoot);
watchers.Add(repositoryRoot, watcher); watchers.Add(repositoryRoot, watcher);
} }
watcher.actions += action; watcher.actions += action;
}
return watcher; return watcher;
} }
@ -103,6 +108,7 @@ namespace ICSharpCode.SharpDevelop.Editor
public void ReleaseWatch(Action action) public void ReleaseWatch(Action action)
{ {
lock (watchers) {
actions -= action; actions -= action;
if (actions == null && !disposed) { if (actions == null && !disposed) {
WorkbenchSingleton.MainWindow.Activated -= MainWindowActivated; WorkbenchSingleton.MainWindow.Activated -= MainWindowActivated;
@ -112,4 +118,5 @@ namespace ICSharpCode.SharpDevelop.Editor
} }
} }
} }
}
} }

Loading…
Cancel
Save