From c25cfb3731cf31025b482410093c0179eca139b8 Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Thu, 19 Mar 2009 14:38:00 +0000 Subject: [PATCH] [269373] Must guard against a null service reference. --- .../ui/actions/GdbDisconnectCommand.java | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbDisconnectCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbDisconnectCommand.java index 4cdb70cfa55..b4690da3220 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbDisconnectCommand.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbDisconnectCommand.java @@ -14,6 +14,7 @@ import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor; import org.eclipse.cdt.dsf.concurrent.DsfExecutor; import org.eclipse.cdt.dsf.concurrent.RequestMonitor; import org.eclipse.cdt.dsf.datamodel.DMContexts; +import org.eclipse.cdt.dsf.debug.service.IProcesses; import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext; import org.eclipse.cdt.dsf.debug.ui.actions.DsfCommandRunnable; import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin; @@ -46,16 +47,22 @@ public class GdbDisconnectCommand implements IDisconnectHandler { fExecutor.submit(new DsfCommandRunnable(fTracker, request.getElements()[0], request) { @Override public void doExecute() { IContainerDMContext containerDmc = DMContexts.getAncestorOfType(getContext(), IContainerDMContext.class); + IProcesses procService = getProcessService(); - getProcessService().canDetachDebuggerFromProcess( - containerDmc, - new DataRequestMonitor(fExecutor, null) { - @Override - protected void handleCompleted() { - request.setEnabled(isSuccess() && getData()); - request.done(); - } - }); + if (procService != null) { + procService.canDetachDebuggerFromProcess( + containerDmc, + new DataRequestMonitor(fExecutor, null) { + @Override + protected void handleCompleted() { + request.setEnabled(isSuccess() && getData()); + request.done(); + } + }); + } else { + request.setEnabled(false); + request.done(); + } } }); } @@ -69,7 +76,11 @@ public class GdbDisconnectCommand implements IDisconnectHandler { fExecutor.submit(new DsfCommandRunnable(fTracker, request.getElements()[0], request) { @Override public void doExecute() { IContainerDMContext containerDmc = DMContexts.getAncestorOfType(getContext(), IContainerDMContext.class); - getProcessService().detachDebuggerFromProcess(containerDmc, new RequestMonitor(fExecutor, null)); + IProcesses procService = getProcessService(); + + if (procService != null) { + procService.detachDebuggerFromProcess(containerDmc, new RequestMonitor(fExecutor, null)); + } } }); return false;