From ebdc625624b5e9952ab09a2472b7be280e862176 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Wed, 9 Sep 2015 15:45:03 +0300 Subject: [PATCH] IDEA-63378 - fixed leaking contexts --- .../com/intellij/debugger/engine/SuspendManagerImpl.java | 7 +++++++ .../src/com/intellij/debugger/impl/DebuggerSession.java | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java index da2c8a1f3a08..f25598bd3b2b 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java @@ -114,6 +114,13 @@ public class SuspendManagerImpl implements SuspendManager { return suspendContext; } + public SuspendContextImpl createDummyContext(int suspendPolicy) { + return new SuspendContextImpl(myDebugProcess, suspendPolicy, 0, null) { + @Override + protected void resumeImpl() {} + }; + } + @Override public SuspendContextImpl pushSuspendContext(final EventSet set) { SuspendContextImpl suspendContext = new SuspendContextImpl(myDebugProcess, set.suspendPolicy(), set.size(), set) { diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java index 34f3ab2436a0..0344fa1a7de2 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerSession.java @@ -656,7 +656,7 @@ public class DebuggerSession implements AbstractDebuggerSession { if (suspendContext != null && suspendContext.getSuspendPolicy() == EventRequest.SUSPEND_EVENT_THREAD && isSteppingThrough(suspendContext.getThread())) { - context = suspendManager.pushSuspendContext(suspendContext.getSuspendPolicy(), 0); + context = ((SuspendManagerImpl)suspendManager).createDummyContext(suspendContext.getSuspendPolicy()); context.setThread(suspendContext.getThread().getThreadReference()); } final SuspendContextImpl currentContext = context;