From e340651e477785b449a34ee7ebaac8df8040a37f Mon Sep 17 00:00:00 2001 From: Vladimir Ilmov Date: Tue, 14 Jan 2020 11:46:07 +0100 Subject: [PATCH] CoroutineAsyncStackTraceProvider stack corruption fix --- .../coroutine/CoroutineAsyncStackTraceProvider.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/CoroutineAsyncStackTraceProvider.kt b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/CoroutineAsyncStackTraceProvider.kt index 107f2e40f47..ec3be9085ec 100644 --- a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/CoroutineAsyncStackTraceProvider.kt +++ b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/CoroutineAsyncStackTraceProvider.kt @@ -17,14 +17,13 @@ import org.jetbrains.kotlin.idea.debugger.evaluate.ExecutionContext class CoroutineAsyncStackTraceProvider : AsyncStackTraceProvider { - override fun getAsyncStackTrace(stackFrame: JavaStackFrame, suspendContext: SuspendContextImpl): List? { - val stackFrameList = hopelessAware { getAsyncStackTraceSafe(stackFrame.stackFrameProxy, suspendContext) } ?: emptyList() - return stackFrameList - } + override fun getAsyncStackTrace(stackFrame: JavaStackFrame, suspendContext: SuspendContextImpl): List? = + getAsyncStackTrace(stackFrame, suspendContext as XSuspendContext) + fun getAsyncStackTrace(stackFrame: JavaStackFrame, suspendContext: XSuspendContext): List? { - val stackFrameList = hopelessAware { getAsyncStackTraceSafe(stackFrame.stackFrameProxy, suspendContext) } ?: emptyList() - return stackFrameList + val stackFrameList = hopelessAware { getAsyncStackTraceSafe(stackFrame.stackFrameProxy, suspendContext) } + return if (stackFrameList == null || stackFrameList.isEmpty()) null else stackFrameList } fun getAsyncStackTraceSafe(frameProxy: StackFrameProxyImpl, suspendContext: XSuspendContext): List {