From d965580202f3e0dd720960b3b86f4e503139008a Mon Sep 17 00:00:00 2001 From: Egor Ushakov Date: Wed, 26 Mar 2025 18:44:08 +0100 Subject: [PATCH] [debugger] do not wrap null result in helper GitOrigin-RevId: 5c2b170084bdc3c857693f9eb2044b8485ecd3e6 --- .../intellij/debugger/engine/MethodInvokeUtils.kt | 14 +++++++------- .../com/intellij/rt/debugger/MethodInvoker.java | 3 +++ 2 files changed, 10 insertions(+), 7 deletions(-) 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<>();