Browse Source

Fixed thread-safety issue in DefaultProjectContent (possible cause of crash #495)

pull/14/head 4.0.0
Daniel Grunwald 15 years ago
parent
commit
dce2df4ca7
  1. 22
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs

22
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs

@ -711,9 +711,11 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
} }
Dictionary<string, NamespaceStruct> dict = GetNamespaces(language); lock (namespaces) {
foreach (var namespaceStruct in dict.Values) { Dictionary<string, NamespaceStruct> dict = GetNamespaces(language);
AddNamespaceStructContents(list, namespaceStruct, language, lookInReferences); foreach (var namespaceStruct in dict.Values) {
AddNamespaceStructContents(list, namespaceStruct, language, lookInReferences);
}
} }
} }
@ -735,10 +737,12 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
Dictionary<string, NamespaceStruct> dict = GetNamespaces(language); lock (namespaces) {
if (dict.ContainsKey(nameSpace)) { Dictionary<string, NamespaceStruct> dict = GetNamespaces(language);
NamespaceStruct ns = dict[nameSpace]; if (dict.ContainsKey(nameSpace)) {
AddNamespaceStructContents(list, ns, language, lookInReferences); NamespaceStruct ns = dict[nameSpace];
AddNamespaceStructContents(list, ns, language, lookInReferences);
}
} }
} }
@ -812,7 +816,9 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
return GetNamespaces(language).ContainsKey(name); lock (namespaces) {
return GetNamespaces(language).ContainsKey(name);
}
} }
bool MatchesRequest(SearchTypeRequest request, ref SearchTypeResult result) bool MatchesRequest(SearchTypeRequest request, ref SearchTypeResult result)

Loading…
Cancel
Save