Browse Source

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

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

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

@ -711,11 +711,13 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
} }
lock (namespaces) {
Dictionary<string, NamespaceStruct> dict = GetNamespaces(language); Dictionary<string, NamespaceStruct> dict = GetNamespaces(language);
foreach (var namespaceStruct in dict.Values) { foreach (var namespaceStruct in dict.Values) {
AddNamespaceStructContents(list, namespaceStruct, language, lookInReferences); AddNamespaceStructContents(list, namespaceStruct, language, lookInReferences);
} }
} }
}
/// <summary> /// <summary>
/// Adds the contents of the specified <paramref name="nameSpace"/> to the <paramref name="list"/>. /// Adds the contents of the specified <paramref name="nameSpace"/> to the <paramref name="list"/>.
@ -735,12 +737,14 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
lock (namespaces) {
Dictionary<string, NamespaceStruct> dict = GetNamespaces(language); Dictionary<string, NamespaceStruct> dict = GetNamespaces(language);
if (dict.ContainsKey(nameSpace)) { if (dict.ContainsKey(nameSpace)) {
NamespaceStruct ns = dict[nameSpace]; NamespaceStruct ns = dict[nameSpace];
AddNamespaceStructContents(list, ns, language, lookInReferences); AddNamespaceStructContents(list, ns, language, lookInReferences);
} }
} }
}
void AddNamespaceStructContents(List<ICompletionEntry> list, NamespaceStruct ns, LanguageProperties language, bool lookInReferences) void AddNamespaceStructContents(List<ICompletionEntry> list, NamespaceStruct ns, LanguageProperties language, bool lookInReferences)
{ {
@ -812,8 +816,10 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
lock (namespaces) {
return GetNamespaces(language).ContainsKey(name); return GetNamespaces(language).ContainsKey(name);
} }
}
bool MatchesRequest(SearchTypeRequest request, ref SearchTypeResult result) bool MatchesRequest(SearchTypeRequest request, ref SearchTypeResult result)
{ {

Loading…
Cancel
Save