diff options
author | Jared Burns | 2003-09-23 15:56:33 +0000 |
---|---|---|
committer | Jared Burns | 2003-09-23 15:56:33 +0000 |
commit | a8a1358d87af043932bc6052751914b678b3d725 (patch) | |
tree | a5379bce8326d1268435ff5b904fb7da23ae2eba /org.eclipse.debug.ui | |
parent | 28386993408f04934a2fb29a7445e44c0f932afe (diff) | |
download | eclipse.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')
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(); |