From 313da5e6a74ecd5c2e34eb5242e42d42b886e984 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 26 Jul 2012 19:39:08 +0200 Subject: [PATCH] ensure a unique sem chunk per file --- .../src/com/intellij/semantic/SemServiceImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/semantic/SemServiceImpl.java b/platform/lang-impl/src/com/intellij/semantic/SemServiceImpl.java index 222e154f132a..500c66260ddb 100644 --- a/platform/lang-impl/src/com/intellij/semantic/SemServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/semantic/SemServiceImpl.java @@ -312,8 +312,12 @@ public class SemServiceImpl extends SemService{ private ConcurrentMap> cacheOrGetMap(final PsiElement element, @NotNull PsiElement root) { FileChunk chunk = obtainChunk(root); if (chunk == null) { - chunk = new FileChunk(root); - myCache.putIfAbsent(root, new SoftReference(chunk)); + synchronized (myCache) { + chunk = obtainChunk(root); + if (chunk == null) { + myCache.put(root, new SoftReference(chunk = new FileChunk(root))); + } + } } ConcurrentMap> map = chunk.map.get(element);