From 21b56220d7937b50f90f09766cb9918ac13ce543 Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Fri, 7 May 2004 14:21:21 +0000 Subject: [PATCH] Fix for PR 60664 --- debug/org.eclipse.cdt.debug.mi.core/ChangeLog | 6 ++++++ .../eclipse/cdt/debug/mi/core/MIInferior.java | 16 ++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog index 66d4d2ca3c8..5b28644b7bf 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog @@ -1,3 +1,9 @@ +2004-05-07 Alain Magloire + + Patch from Keith Rolling(Palm Source). + PR 60664 + * src/org/eclipse/cdt/debug/mi/core/MIInferior.java + 2004-04-01 Alain Magloire GDBServer configuration should be "*" not "native" diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInferior.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInferior.java index 34d2b84edf8..c458d1956b7 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInferior.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInferior.java @@ -17,7 +17,6 @@ import org.eclipse.cdt.debug.mi.core.command.MIGDBShowExitCode; import org.eclipse.cdt.debug.mi.core.command.MIInfoProgram; import org.eclipse.cdt.debug.mi.core.event.MIInferiorExitEvent; import org.eclipse.cdt.debug.mi.core.output.MIGDBShowExitCodeInfo; -import org.eclipse.cdt.debug.mi.core.output.MIInfo; import org.eclipse.cdt.debug.mi.core.output.MIInfoProgramInfo; import org.eclipse.cdt.utils.pty.PTY; import org.eclipse.cdt.utils.spawner.Spawner; @@ -109,13 +108,17 @@ public class MIInferior extends Process { return err; } + public synchronized void waitForSync() throws InterruptedException { + while (state != TERMINATED) { + wait(); + } + } + /** * @see java.lang.Process#waitFor() */ - public synchronized int waitFor() throws InterruptedException { - while (state != TERMINATED) { - wait(); - } + public int waitFor() throws InterruptedException { + waitForSync(); return exitValue(); } @@ -180,7 +183,8 @@ public class MIInferior extends Process { if (interrupt != null) { try { session.postCommand(interrupt); - MIInfo info = interrupt.getMIInfo(); + // call getMIInfo() even if we discard the value; + interrupt.getMIInfo(); // Allow (5 secs) for the interrupt to propagate. for (int i = 0;(state == RUNNING) && i < 5; i++) { try {