From 2122e4681c3668684b9dca030b8d19dba0d20cf0 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Fri, 18 May 2007 15:58:48 +0000 Subject: [PATCH] Bug 187787 - Fixed restart. The inferior PID wasn't getting reset on a restart so the interrupt was being sent to the wrong pid. --- .../cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java | 6 ++++++ .../mi/org/eclipse/cdt/debug/mi/core/MIInferior.java | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java index ea78f70af12..61fdfb3a395 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java @@ -48,6 +48,7 @@ import org.eclipse.cdt.debug.core.cdi.model.ICDIThread; import org.eclipse.cdt.debug.core.cdi.model.ICDIWatchpoint; import org.eclipse.cdt.debug.mi.core.CoreProcess; import org.eclipse.cdt.debug.mi.core.MIException; +import org.eclipse.cdt.debug.mi.core.MIInferior; import org.eclipse.cdt.debug.mi.core.MISession; import org.eclipse.cdt.debug.mi.core.RxThread; import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager; @@ -441,6 +442,9 @@ public class Target extends SessionObject implements ICDITarget, ICDIBreakpointM * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#restart() */ public void restart() throws CDIException { + // Reset the inferior pid + MIInferior inferior = getMISession().getMIInferior(); + int pid = inferior.resetInferiorPID(); CommandFactory factory = miSession.getCommandFactory(); MIExecRun run = factory.createMIExecRun(new String[0]); try { @@ -450,6 +454,8 @@ public class Target extends SessionObject implements ICDITarget, ICDIBreakpointM throw new CDIException(CdiResources.getString("cdi.model.Target.Target_not_responding")); //$NON-NLS-1$ } } catch (MIException e) { + // Replace pid since we probably didn't actually restart + inferior.setInferiorPID(pid); throw new MI2CDIException(e); } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/MIInferior.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/MIInferior.java index 170228ded8c..a3df24e39ec 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/MIInferior.java +++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/MIInferior.java @@ -349,6 +349,12 @@ public class MIInferior extends Process { } } + public int resetInferiorPID() { + int pid = inferiorPID; + inferiorPID = 0; + return pid; + } + public void setInferiorPID(int pid) { inferiorPID = pid; }