diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/MethodInvokeUtils.kt b/java/debugger/impl/src/com/intellij/debugger/engine/MethodInvokeUtils.kt index be7f6792e8af..6299415a2331 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/MethodInvokeUtils.kt +++ b/java/debugger/impl/src/com/intellij/debugger/engine/MethodInvokeUtils.kt @@ -158,13 +158,13 @@ internal fun tryInvokeWithHelper( value = value.getValue(0) if (value is ObjectReference) { evaluationContext.suspendContext.keepAsync(value) - } - // clear the reference - if (DebuggerUtilsAsync.isAsyncEnabled() && wrapper is ArrayReferenceImpl) { - wrapper.setFirstElementToNull() - } - else { - wrapper.setValue(0, null) + // clear the reference + if (DebuggerUtilsAsync.isAsyncEnabled() && wrapper is ArrayReferenceImpl) { + wrapper.setFirstElementToNull() + } + else { + wrapper.setValue(0, null) + } } } return InvocationResult(true, value) diff --git a/java/java-runtime/src/com/intellij/rt/debugger/MethodInvoker.java b/java/java-runtime/src/com/intellij/rt/debugger/MethodInvoker.java index a515a0490977..f075fd43912c 100644 --- a/java/java-runtime/src/com/intellij/rt/debugger/MethodInvoker.java +++ b/java/java-runtime/src/com/intellij/rt/debugger/MethodInvoker.java @@ -235,6 +235,9 @@ public final class MethodInvoker { } private static Object keepReference(Object ref, boolean soft) { + if (ref == null) { + return ref; + } List objects = keptValues.get(); if (objects == null) { objects = new LinkedList<>();