Bug 338464 - EmptyStackException running UI test suite
diff --git a/ant/org.eclipse.ant.launching/common/org/eclipse/ant/internal/launching/debug/AntDebugState.java b/ant/org.eclipse.ant.launching/common/org/eclipse/ant/internal/launching/debug/AntDebugState.java
index 94aef45..49332ed 100644
--- a/ant/org.eclipse.ant.launching/common/org/eclipse/ant/internal/launching/debug/AntDebugState.java
+++ b/ant/org.eclipse.ant.launching/common/org/eclipse/ant/internal/launching/debug/AntDebugState.java
@@ -245,34 +245,38 @@
setCurrentTask(event.getTask());
setConsiderTargetBreakpoints(false);
- if (!getTasks().isEmpty()) {
+ Stack tasks = getTasks();
+ if (!tasks.isEmpty()) {
//cache the parent task proxy as when that task is started or finished the
//proxy is not yet available or is nulled out
- Task parentTask = (Task) getTasks().peek();
+ Task parentTask = (Task) tasks.peek();
Object proxy = parentTask.getRuntimeConfigurableWrapper().getProxy();
if (proxy != null) {
fTaskToProxies.put(parentTask, proxy);
}
}
- getTasks().push(getCurrentTask());
+ tasks.push(getCurrentTask());
waitIfSuspended();
}
public void taskFinished() {
- Task lastTask= (Task)getTasks().pop();
- setLastTaskFinished(lastTask);
- setCurrentTask(null);
- String taskName= lastTask.getTaskName();
-
- if (getStepOverTask() != null) {
- if ((fgAntCallTaskName.equals(taskName) || fgAntTaskName.equals(taskName)) && (!fgAntCallTaskName.equals(getStepOverTask().getTaskName()) && !fgAntTaskName.equals(getStepOverTask().getTaskName()))) {
- setShouldSuspend(true);
- } else if (fTaskToProxies.remove(lastTask) instanceof MacroInstance) {
- setShouldSuspend(true);
- }
- }
- waitIfSuspended();
+ Stack tasks = getTasks();
+ if(!tasks.empty()) {
+ Task lastTask= (Task)tasks.pop();
+ setLastTaskFinished(lastTask);
+ setCurrentTask(null);
+ String taskName= lastTask.getTaskName();
+
+ if (getStepOverTask() != null) {
+ if ((fgAntCallTaskName.equals(taskName) || fgAntTaskName.equals(taskName)) && (!fgAntCallTaskName.equals(getStepOverTask().getTaskName()) && !fgAntTaskName.equals(getStepOverTask().getTaskName()))) {
+ setShouldSuspend(true);
+ } else if (fTaskToProxies.remove(lastTask) instanceof MacroInstance) {
+ setShouldSuspend(true);
+ }
+ }
+ }
+ waitIfSuspended();
}
public void stepOver() {
@@ -396,7 +400,7 @@
Project projectExecuting= null;
if (targetExecuting != null) {
projectExecuting= targetExecuting.getProject();
- } else { //no target...must be a task
+ } else if(!tasks.empty()) { //no target...must be a task
Task task= (Task) tasks.peek();
projectExecuting= task.getProject();
}
@@ -449,13 +453,14 @@
}
public void marshallProperties(StringBuffer propertiesRepresentation, boolean escapeLineSep) {
- if (getTasks().isEmpty()) {
+ Stack tasks = getTasks();
+ if (tasks.isEmpty()) {
return;
}
propertiesRepresentation.append(DebugMessageIds.PROPERTIES);
propertiesRepresentation.append(DebugMessageIds.MESSAGE_DELIMITER);
- Project project= ((Task)getTasks().peek()).getProject();
+ Project project= ((Task)tasks.peek()).getProject();
Map lastProperties= getProperties();
Map currentProperties= project.getProperties();