diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbConnectCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbConnectCommand.java index 5d36b7d44bf..f25797c023c 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbConnectCommand.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbConnectCommand.java @@ -129,7 +129,9 @@ public class GdbConnectCommand implements IConnect { try { PrompterInfo info = new PrompterInfo(fNewProcessSupported, fProcessList); Object result = prompter.handleStatus(processPromptStatus, info); - if (result instanceof Integer || result instanceof String) { + if (result == null) { + fRequestMonitor.cancel(); + } else if (result instanceof Integer || result instanceof String) { fRequestMonitor.setData(result); } else { fRequestMonitor.setStatus(NO_PID_STATUS); @@ -185,6 +187,11 @@ public class GdbConnectCommand implements IConnect { new PromptForPidJob( "Prompt for Process", newProcessSupported, procInfoList.toArray(new IProcessExtendedInfo[0]), //$NON-NLS-1$ new DataRequestMonitor(fExecutor, rm) { + @Override + protected void handleCancel() { + rm.cancel(); + rm.done(); + } @Override protected void handleSuccess() { // New cycle, look for service again diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java index 8277708204e..0c0f44316f0 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java @@ -388,7 +388,9 @@ public class FinalLaunchSequence extends ReflectionSequence { try { Object result = prompter.handleStatus(filePrompt, null); - if (result instanceof String) { + if (result == null) { + fRequestMonitor.cancel(); + } else if (result instanceof String) { fRequestMonitor.setData((String)result); } else { fRequestMonitor.setStatus(NO_CORE_STATUS); @@ -421,6 +423,11 @@ public class FinalLaunchSequence extends ReflectionSequence { new PromptForCoreJob( "Prompt for post mortem file", //$NON-NLS-1$ new DataRequestMonitor(getExecutor(), requestMonitor) { + @Override + protected void handleCancel() { + requestMonitor.cancel(); + requestMonitor.done(); + } @Override protected void handleSuccess() { String newCoreFile = getData();