From 098fb8369838eca78697491dffedf6d8002514ba Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 30 May 2012 14:53:36 +0200 Subject: [PATCH] don't leak debugged process via cached toString() method in user data --- .../src/com/intellij/debugger/engine/DebugProcessImpl.java | 1 + .../src/com/intellij/debugger/engine/DebuggerUtils.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java index 1136db3dd846..8c2912a99d8d 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java @@ -775,6 +775,7 @@ public abstract class DebugProcessImpl implements DebugProcess { myReturnValueWatcher = null; myNodeRederersMap.clear(); myRenderers.clear(); + DebuggerUtils.cleanupAfterProcessFinish(this); myState.set(STATE_DETACHED); try { myDebugProcessDispatcher.getMulticaster().processDetached(this, closedByUser); diff --git a/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java b/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java index 9671d72a853f..418e442ecada 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java +++ b/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java @@ -54,6 +54,10 @@ public abstract class DebuggerUtils { "byte", "short", "int", "long", "float", "double", "boolean", "char" )); + public static void cleanupAfterProcessFinish(DebugProcess debugProcess) { + debugProcess.putUserData(TO_STRING_METHOD_KEY, null); + } + @NonNls public static String getValueAsString(final EvaluationContext evaluationContext, Value value) throws EvaluateException { try {