diff --git a/platform/core-impl/src/com/intellij/util/CachedValuesManagerImpl.java b/platform/core-impl/src/com/intellij/util/CachedValuesManagerImpl.java index c837e564841e..28c2a6cd69e7 100644 --- a/platform/core-impl/src/com/intellij/util/CachedValuesManagerImpl.java +++ b/platform/core-impl/src/com/intellij/util/CachedValuesManagerImpl.java @@ -59,9 +59,12 @@ public class CachedValuesManagerImpl extends CachedValuesManager { if (dataHolder instanceof UserDataHolderEx) { UserDataHolderEx dh = (UserDataHolderEx)dataHolder; value = dh.getUserData(key); - if (isOutdated(value)) { - value = null; - dh.putUserData(key, null); + while (isOutdated(value)) { + if (dh.replace(key, value, null)) { + value = null; + break; + } + value = dh.getUserData(key); } if (value == null) { value = createCachedValue(provider, trackValue);