From 0c9803fd5d310b65e534d9c56e7fc355f593dd34 Mon Sep 17 00:00:00 2001
From: Mikhail Khodjaiants <mikhailkhod@googlemail.com>
Date: Sun, 18 Aug 2002 21:27:43 +0000
Subject: [PATCH] Changed the termination procedure.

---
 .../eclipse/cdt/debug/mi/core/MIInferior.java | 22 +++++++++----------
 .../eclipse/cdt/debug/mi/core/RxThread.java   |  7 +++---
 2 files changed, 15 insertions(+), 14 deletions(-)

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 db1b8e973e4..20405fbbd87 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
@@ -126,17 +126,17 @@ public class MIInferior extends Process {
 			}
 		}
 */
-		if (!isSuspended())
-		{
-			// interrupt execution
-		}
-		CommandFactory factory = session.getCommandFactory();
-		MIGDBExit exit = factory.createMIGDBExit();
-		try {
-			session.postCommand(exit);
-			setTerminated();
-			session.getRxThread().fireEvent(new MIExitEvent());
-		} catch (MIException e) {
+		if (!isTerminated()) {			
+			if (!isSuspended())
+			{
+				// interrupt execution
+			}
+			CommandFactory factory = session.getCommandFactory();
+			MIGDBExit exit = factory.createMIGDBExit();
+			try {
+				session.postCommand(exit);
+			} catch (MIException e) {
+			}
 		}
 	}
 
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java
index 9d9657e2533..cf2413b7174 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java
@@ -121,6 +121,7 @@ MIPlugin.getDefault().debugLog(line);
 					fireEvent(event);
 				} else if ("exit".equals(state)) {
 					session.getMIInferior().setTerminated();
+					fireEvent(new MIExitEvent());
 				}
 
 				// Notify the waiting command.
@@ -309,13 +310,13 @@ MIPlugin.getDefault().debugLog(line);
 				event = new MIFunctionFinishedEvent(rr);
 			}
 		} else if ("exited-normally".equals(reason)) {
-			session.getMIInferior().setTerminated();
+//			session.getMIInferior().setTerminated();
 			event = new MIInferiorExitEvent();
 		} else if ("exited-signalled".equals(reason)) {
-			session.getMIInferior().setTerminated();
+//			session.getMIInferior().setTerminated();
 			event = new MIInferiorExitEvent();
 		} else if ("exited".equals(reason)) {
-			session.getMIInferior().setTerminated();
+//			session.getMIInferior().setTerminated();
 			event = new MIInferiorExitEvent();
 		}
 		return event;