Skip to content
代码片段 群组 项目
提交 6bfb43df 编辑于 作者: Jason Malinowski's avatar Jason Malinowski
浏览文件

Fix race in GetOpenDocumentInCurrentContextWithChanges

This was reading Workspace.CurrentSolution twice, so if the document
was removed between two reads it'd end up throwing exceptions or
triggering asserts.
上级 aaa74511
No related branches found
No related tags found
加载中
...@@ -33,14 +33,15 @@ public static Document GetOpenDocumentInCurrentContextWithChanges(this SourceTex ...@@ -33,14 +33,15 @@ public static Document GetOpenDocumentInCurrentContextWithChanges(this SourceTex
{ {
if (Workspace.TryGetWorkspace(text.Container, out var workspace)) if (Workspace.TryGetWorkspace(text.Container, out var workspace))
{ {
var solution = workspace.CurrentSolution;
var id = workspace.GetDocumentIdInCurrentContext(text.Container); var id = workspace.GetDocumentIdInCurrentContext(text.Container);
if (id == null || !workspace.CurrentSolution.ContainsDocument(id)) if (id == null || !solution.ContainsDocument(id))
{ {
return null; return null;
} }
var sol = workspace.CurrentSolution.WithDocumentText(id, text, PreservationMode.PreserveIdentity); return solution.WithDocumentText(id, text, PreservationMode.PreserveIdentity)
return sol.GetDocument(id); .GetDocument(id);
} }
return null; return null;
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册