mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 17:56:01 +02:00
[269373] Must guard against a null service reference.
This commit is contained in:
parent
78325314e3
commit
c25cfb3731
1 changed files with 21 additions and 10 deletions
|
@ -14,6 +14,7 @@ import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
|
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
|
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
|
||||||
import org.eclipse.cdt.dsf.datamodel.DMContexts;
|
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.service.IRunControl.IContainerDMContext;
|
||||||
import org.eclipse.cdt.dsf.debug.ui.actions.DsfCommandRunnable;
|
import org.eclipse.cdt.dsf.debug.ui.actions.DsfCommandRunnable;
|
||||||
import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
|
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) {
|
fExecutor.submit(new DsfCommandRunnable(fTracker, request.getElements()[0], request) {
|
||||||
@Override public void doExecute() {
|
@Override public void doExecute() {
|
||||||
IContainerDMContext containerDmc = DMContexts.getAncestorOfType(getContext(), IContainerDMContext.class);
|
IContainerDMContext containerDmc = DMContexts.getAncestorOfType(getContext(), IContainerDMContext.class);
|
||||||
|
IProcesses procService = getProcessService();
|
||||||
|
|
||||||
getProcessService().canDetachDebuggerFromProcess(
|
if (procService != null) {
|
||||||
containerDmc,
|
procService.canDetachDebuggerFromProcess(
|
||||||
new DataRequestMonitor<Boolean>(fExecutor, null) {
|
containerDmc,
|
||||||
@Override
|
new DataRequestMonitor<Boolean>(fExecutor, null) {
|
||||||
protected void handleCompleted() {
|
@Override
|
||||||
request.setEnabled(isSuccess() && getData());
|
protected void handleCompleted() {
|
||||||
request.done();
|
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) {
|
fExecutor.submit(new DsfCommandRunnable(fTracker, request.getElements()[0], request) {
|
||||||
@Override public void doExecute() {
|
@Override public void doExecute() {
|
||||||
IContainerDMContext containerDmc = DMContexts.getAncestorOfType(getContext(), IContainerDMContext.class);
|
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;
|
return false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue