From 9ecebfa28758dfa4e96b841ffe63b31db270a91e Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Fri, 1 Nov 2002 16:44:34 +0000 Subject: [PATCH] Try to catch upfront errors like bad arguments by checking if the process is still alive. --- .../eclipse/cdt/debug/mi/core/MISession.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java index 28ac1e91e5f..2c1c2a9de27 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java @@ -4,8 +4,10 @@ */ package org.eclipse.cdt.debug.mi.core; +import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PipedInputStream; import java.io.PipedOutputStream; @@ -107,6 +109,27 @@ public class MISession extends Observable { rxQueue = new CommandQueue(); eventQueue = new Queue(); + // The Process may have terminated earlier because + // of bad arguments etc .. check this here and bail out. + try { + process.exitValue(); + InputStream err = process.getErrorStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(err)); + String line = null; + try { + line = reader.readLine(); + reader.close(); + } catch (Exception e) { + // the reader may throw a NPE. + } + if (line == null) { + line = "Process Terminated"; + } + throw new MIException(line); + } catch (IllegalThreadStateException e) { + // Ok, it means the process is alive. + } + txThread = new TxThread(this); rxThread = new RxThread(this); eventThread = new EventThread(this);