From a84948269c0fe65ceaf7bc48fb190979e560767b Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 12 Nov 2018 18:07:44 +0100 Subject: [PATCH] IDEA-200807 NPE caused by NonClasspathClassFinder constructor leaking "this" --- .../src/com/intellij/psi/NonClasspathClassFinder.java | 2 +- plugins/gradle/java/src/config/GradleClassFinder.java | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/NonClasspathClassFinder.java b/java/java-psi-impl/src/com/intellij/psi/NonClasspathClassFinder.java index 737bacfd4e00..d586dcc11001 100644 --- a/java/java-psi-impl/src/com/intellij/psi/NonClasspathClassFinder.java +++ b/java/java-psi-impl/src/com/intellij/psi/NonClasspathClassFinder.java @@ -52,7 +52,7 @@ public abstract class NonClasspathClassFinder extends PsiElementFinder { clearCache(); } }); - LowMemoryWatcher.register(() -> clearCache(), project); + LowMemoryWatcher.register(() -> myCache = null, project); } @NotNull diff --git a/plugins/gradle/java/src/config/GradleClassFinder.java b/plugins/gradle/java/src/config/GradleClassFinder.java index 0f3ae6b81783..7ea5cc5ebef9 100644 --- a/plugins/gradle/java/src/config/GradleClassFinder.java +++ b/plugins/gradle/java/src/config/GradleClassFinder.java @@ -67,12 +67,7 @@ public class GradleClassFinder extends NonClasspathClassFinder { @Override public void clearCache() { super.clearCache(); - // The parent class can publish a reference to this object before the constructor has returned. - // Thus, it's possible that not all fields of this object are initialized by the time they - // are accessed in clearCache(). Workaround is to null check. - if (myCaches != null) { - myCaches.clear(); - } + myCaches.clear(); } @Override