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

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@xamarin.com>2019-07-18 19:41:51 +0300
committerGitHub <noreply@github.com>2019-07-18 19:41:51 +0300
commit71b2d14f85db2a9bc8df544dab1eaf586a9f9cd4 (patch)
treec29477bae60dbd25721096e71bafb1abd8ea778d /main
parent1c1a06e4b3d85e407d7f5bf8fab8036638b8be0c (diff)
parent809a2bc9341c3d54579fd11a50130a7a217cc3e5 (diff)
Merge pull request #8151 from mono/backport-pr-8146-to-release-8.2
[release-8.2] [Debugger] Make sure to lock around BreakpointStore when using it
Diffstat (limited to 'main')
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.VSTextView/BreakpointManager.cs14
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/PinnedWatchStore.cs8
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs24
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs2
4 files changed, 31 insertions, 17 deletions
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.VSTextView/BreakpointManager.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.VSTextView/BreakpointManager.cs
index 93058fe629..9e7aff8e03 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.VSTextView/BreakpointManager.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.VSTextView/BreakpointManager.cs
@@ -63,13 +63,21 @@ namespace MonoDevelop.Debugger
private async void OnBreakpointsChanged (object sender, EventArgs eventArgs)
{
var newBreakpoints = new Dictionary<Breakpoint, ManagerBreakpoint> ();
+ var breakpointStore = DebuggingService.Breakpoints;
var snapshot = textBuffer.CurrentSnapshot;
+ var bps = new List<Breakpoint> ();
var needsUpdate = false;
- foreach (var breakpoint in DebuggingService.Breakpoints.GetBreakpointsAtFile (textDocument.FilePath)) {
- if (breakpoint.Line > snapshot.LineCount)
- continue;
+ lock (breakpointStore) {
+ foreach (var breakpoint in breakpointStore.GetBreakpointsAtFile (textDocument.FilePath)) {
+ if (breakpoint.Line > snapshot.LineCount)
+ continue;
+
+ bps.Add (breakpoint);
+ }
+ }
+ foreach (var breakpoint in bps) {
if (eventArgs is BreakpointEventArgs breakpointEventArgs && breakpointEventArgs.Breakpoint == breakpoint)
needsUpdate = true;
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/PinnedWatchStore.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/PinnedWatchStore.cs
index ffdb0eaa8f..2e5fe0cca0 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/PinnedWatchStore.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/PinnedWatchStore.cs
@@ -90,11 +90,11 @@ namespace MonoDevelop.Debugger
internal void BindAll (BreakpointStore bps)
{
lock (watches) {
- foreach (PinnedWatch w in watches) {
- foreach (Breakpoint bp in bps.GetBreakpoints ()) {
+ foreach (var watch in watches) {
+ foreach (var bp in bps.GetBreakpoints ()) {
if ((bp.HitAction & HitAction.PrintExpression) != HitAction.None &&
- bp.TraceExpression == "{" + w.Expression + "}" && bp.FileName == w.File && bp.Line == w.Line)
- Bind (w, bp);
+ bp.TraceExpression == "{" + watch.Expression + "}" && bp.FileName == watch.File && bp.Line == watch.Line)
+ Bind (watch, bp);
}
}
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs
index 183293bcf6..38d4003d5b 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs
@@ -723,16 +723,22 @@ namespace MonoDevelop.SourceEditor.QuickTasks
void DrawBreakpoints (Cairo.Context cr)
{
- var breakPoints = parentStrip.SourceEditorView.Breakpoints.GetBreakpointsAtFile (TextEditor.FileName);
- if (breakPoints == null)
- return;
- foreach (var point in breakPoints) {
- int y = (int)GetYPosition (point.Line);
+ var breakpointStore = parentStrip.SourceEditorView.Breakpoints;
- cr.SetSourceColor (SyntaxHighlightingService.GetColor (TextEditor.EditorTheme, EditorThemeColors.BreakpointMarker));
- int r = 4;
- cr.Rectangle (0, y - r / 2, r, r);
- cr.Fill ();
+ lock (breakpointStore) {
+ var breakPoints = breakpointStore.GetBreakpointsAtFile (TextEditor.FileName);
+
+ if (breakPoints == null)
+ return;
+
+ foreach (var point in breakPoints) {
+ int y = (int)GetYPosition (point.Line);
+
+ cr.SetSourceColor (SyntaxHighlightingService.GetColor (TextEditor.EditorTheme, EditorThemeColors.BreakpointMarker));
+ int r = 4;
+ cr.Rectangle (0, y - r / 2, r, r);
+ cr.Fill ();
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
index 1b047408f9..c9407e4dbe 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
@@ -1384,7 +1384,7 @@ namespace MonoDevelop.SourceEditor
breakpointSegments.Clear ();
lock (breakpoints) {
- foreach (Breakpoint bp in breakpoints.GetBreakpointsAtFile (fp.FullPath)) {
+ foreach (var bp in breakpoints.GetBreakpointsAtFile (fp.FullPath)) {
lineNumbers.Add (bp.Line);
AddBreakpoint (bp);
}