Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJared Burns2003-09-23 15:56:33 +0000
committerJared Burns2003-09-23 15:56:33 +0000
commita8a1358d87af043932bc6052751914b678b3d725 (patch)
treea5379bce8326d1268435ff5b904fb7da23ae2eba /org.eclipse.debug.ui
parent28386993408f04934a2fb29a7445e44c0f932afe (diff)
downloadeclipse.platform.debug-a8a1358d87af043932bc6052751914b678b3d725.tar.gz
eclipse.platform.debug-a8a1358d87af043932bc6052751914b678b3d725.tar.xz
eclipse.platform.debug-a8a1358d87af043932bc6052751914b678b3d725.zip
Bug 43197 - Race condition between console line tracker and debug terminate event
Diffstat (limited to 'org.eclipse.debug.ui')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleDocumentPartitioner.java4
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleLineNotifier.java7
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/IConsoleLineTracker.java6
3 files changed, 16 insertions, 1 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleDocumentPartitioner.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleDocumentPartitioner.java
index d1e16b541..fb25b3d9b 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleDocumentPartitioner.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleDocumentPartitioner.java
@@ -615,7 +615,9 @@ public class ConsoleDocumentPartitioner implements IDocumentPartitioner, IDocume
if (display != null) {
display.asyncExec(new Runnable() {
public void run() {
- fLineNotifier.streamClosed();
+ if (fLineNotifier != null) {
+ fLineNotifier.streamClosed();
+ }
}
});
}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleLineNotifier.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleLineNotifier.java
index fdd167fad..36ec3aa53 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleLineNotifier.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleLineNotifier.java
@@ -85,7 +85,14 @@ public class ConsoleLineNotifier {
*/
public void streamClosed() {
fClosed= true;
+ // First, notify of any pending lines
processNewLines();
+ // Then, notify of the close
+ Object[] listeners= fListeners.getListeners();
+ for (int i = 0; i < listeners.length; i++) {
+ IConsoleLineTracker tracker = (IConsoleLineTracker) listeners[i];
+ tracker.streamClosed();
+ }
}
/**
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/IConsoleLineTracker.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/IConsoleLineTracker.java
index b05ebec90..b7e302823 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/IConsoleLineTracker.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/console/IConsoleLineTracker.java
@@ -62,6 +62,12 @@ public interface IConsoleLineTracker {
public void lineAppended(IRegion line);
/**
+ * Notification that the input to the console has been closed. No
+ * more lines will be appended after this method is called.
+ */
+ public void streamClosed();
+
+ /**
* Disposes this console line tracker.
*/
public void dispose();

Back to the top