Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJared Burns2002-06-11 14:03:19 +0000
committerJared Burns2002-06-11 14:03:19 +0000
commitb81e0e2b3d63532234a0d60142c8a81925a0ae0d (patch)
tree84e89132430c8795fbf90643a2d22cecc40902e8
parent7ef8e7d339d6a2d0a805082057990c90c666bc07 (diff)
downloadeclipse.platform.debug-b81e0e2b3d63532234a0d60142c8a81925a0ae0d.tar.gz
eclipse.platform.debug-b81e0e2b3d63532234a0d60142c8a81925a0ae0d.tar.xz
eclipse.platform.debug-b81e0e2b3d63532234a0d60142c8a81925a0ae0d.zip
Bug 19349 - Debug exception on step if var selected and detail pane visible
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewEventHandler.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewEventHandler.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewEventHandler.java
index 3144669b6..9ea09187a 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewEventHandler.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewEventHandler.java
@@ -44,6 +44,14 @@ public class LaunchViewEventHandler extends AbstractDebugEventHandler implements
private ThreadTimer fThreadTimer= new ThreadTimer();
/**
+ * During a suspend event callback, some views may resume
+ * the thread to perform an evaluation. This flag is set
+ * when that state is detected so that the view can be
+ * properly refreshed when the evaluation completes.
+ */
+ private boolean fEvaluatingForSuspend= false;
+
+ /**
* Constructs an event handler for the given launch view.
*
* @param view launch view
@@ -163,7 +171,7 @@ public class LaunchViewEventHandler extends AbstractDebugEventHandler implements
}
boolean wasTimedOut= fThreadTimer.getTimedOutThreads().remove(thread);
- if (event.isEvaluation() && ((event.getDetail() & DebugEvent.EVALUATION_IMPLICIT) != 0)) {
+ if (event.isEvaluation() && ((event.getDetail() & DebugEvent.EVALUATION_IMPLICIT) != 0) && !fEvaluatingForSuspend) {
if (thread != null && wasTimedOut) {
// Refresh the thread label when a timed out evaluation finishes.
// This is necessary because the timeout updates
@@ -173,6 +181,7 @@ public class LaunchViewEventHandler extends AbstractDebugEventHandler implements
// Don't refresh fully for evaluation completion.
return;
}
+ fEvaluatingForSuspend= false;
}
if (element instanceof IThread) {
doHandleSuspendThreadEvent((IThread)element);
@@ -191,6 +200,7 @@ public class LaunchViewEventHandler extends AbstractDebugEventHandler implements
protected void doHandleSuspendThreadEvent(IThread thread) {
// if the thread has already resumed, do nothing
if (!thread.isSuspended()) {
+ fEvaluatingForSuspend= true;
return;
}
@@ -505,4 +515,6 @@ public class LaunchViewEventHandler extends AbstractDebugEventHandler implements
}
}
}
-} \ No newline at end of file
+
+}
+

Back to the top