Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimeon Andreev2019-12-04 14:56:47 +0000
committerKarsten Thoms2019-12-11 10:50:38 +0000
commit2b7eef1df484966135d06f39addf2d613e11904f (patch)
treeb028d548cd7b0188c2aa4b44e4c4ca9390927015
parent2bf74dbe04ac8facb02557a26fe20e5fac0d5e24 (diff)
downloadeclipse.platform.debug-2b7eef1df484966135d06f39addf2d613e11904f.tar.gz
eclipse.platform.debug-2b7eef1df484966135d06f39addf2d613e11904f.tar.xz
eclipse.platform.debug-2b7eef1df484966135d06f39addf2d613e11904f.zip
Bug 553770 - Error when closing output stream of disposed MessageConsoleI20191213-0155I20191212-1800I20191211-1805
The fix for bug 551745 adds logging, in case an IOConsole stream is closed after all streams of the console are considered closed (e.g. on dispose()). For a MessageConsole, its possible to create a new MessageConsoleStream and close it after the MessageConsole is disposed. This will produce the new error log entry. This change adds any MessageConsoleStream created by MessageConsole.newMessageStream() to IOConsole.openStream, so that the streams created by MessageConsole are also correctly handled by IOConsole. Change-Id: I09156248fac6b6f63daab88b8881a197e7fe83fb Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java15
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsole.java4
2 files changed, 15 insertions, 4 deletions
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java
index c808df695..042308fdd 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java
@@ -168,9 +168,7 @@ public class IOConsole extends TextConsole {
*/
public IOConsoleOutputStream newOutputStream() {
IOConsoleOutputStream outputStream = new IOConsoleOutputStream(this, this.charset);
- synchronized(openStreams) {
- openStreams.add(outputStream);
- }
+ addOpenStream(outputStream);
return outputStream;
}
@@ -402,4 +400,15 @@ public class IOConsole extends TextConsole {
public void setCarriageReturnAsControlCharacter(boolean carriageReturnAsControlCharacter) {
partitioner.setCarriageReturnAsControlCharacter(carriageReturnAsControlCharacter);
}
+
+ /**
+ * Registers a stream that will be managed by this console.
+ *
+ * @param stream The stream which will be closed on {@link #dispose()}.
+ */
+ void addOpenStream(Closeable stream) {
+ synchronized (openStreams) {
+ openStreams.add(stream);
+ }
+ }
}
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsole.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsole.java
index 39995671e..ccdc077c7 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsole.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsole.java
@@ -127,7 +127,9 @@ public class MessageConsole extends IOConsole {
* @return a new message stream connected to this console
*/
public MessageConsoleStream newMessageStream() {
- return new MessageConsoleStream(this, this.getCharset());
+ MessageConsoleStream messageConsoleStream = new MessageConsoleStream(this, this.getCharset());
+ addOpenStream(messageConsoleStream);
+ return messageConsoleStream;
}
@Override

Back to the top