From 8b846f9d2b36a972b97f54b3f4f2713356e2a6c2 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Wed, 6 Jul 2016 17:58:15 +0300 Subject: [PATCH] check that vms match if class loader is null, otherwise we may take last result from the different debug session --- .../engine/evaluation/expression/TypeEvaluator.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/TypeEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/TypeEvaluator.java index aa23b7b0d659..04adc61c7978 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/TypeEvaluator.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/TypeEvaluator.java @@ -52,9 +52,12 @@ public class TypeEvaluator implements Evaluator { */ public Object evaluate(EvaluationContextImpl context) throws EvaluateException { ClassLoaderReference classLoader = context.getClassLoader(); - Object lastRes = SoftReference.dereference(myLastResult); + ReferenceType lastRes = SoftReference.dereference(myLastResult); if (lastRes != null && classLoader == SoftReference.dereference(myLastClassLoader)) { - return lastRes; + // if class loader is null, check that vms match + if (classLoader != null || lastRes.virtualMachine().equals(context.getDebugProcess().getVirtualMachineProxy().getVirtualMachine())) { + return lastRes; + } } DebugProcessImpl debugProcess = context.getDebugProcess(); String typeName = myTypeName.getName(debugProcess);