From 59d044cdfbdef03fd630c3a8efdc3e654e4a654f Mon Sep 17 00:00:00 2001 From: Greg Watson Date: Fri, 26 Jun 2015 11:02:46 -0400 Subject: [PATCH] Bug 471143 - Prevent potential NPE in disconnect Change-Id: I6a160806868048442c0e09bd8541177a650d01bb Signed-off-by: Greg Watson --- .../console/TerminalConsoleConnector.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleConnector.java b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleConnector.java index ad8668c9f4e..282745e14d5 100644 --- a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleConnector.java +++ b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleConnector.java @@ -46,15 +46,19 @@ public class TerminalConsoleConnector { public OutThread() { super("Terminal Output"); //$NON-NLS-1$ } + + @Override public void run() { try { byte[] buff = new byte[1024]; - InputStream in = remoteProcess.getInputStream(); - for (int n = in.read(buff); n >= 0; n = in.read(buff)) { - for (PageConnector connector : pageConnectors) { - ITerminalControl control = connector.control; - if (control != null) { - control.getRemoteToTerminalOutputStream().write(buff, 0, n); + if (remoteProcess != null) { + InputStream in = remoteProcess.getInputStream(); + for (int n = in.read(buff); n >= 0; n = in.read(buff)) { + for (PageConnector connector : pageConnectors) { + ITerminalControl control = connector.control; + if (control != null) { + control.getRemoteToTerminalOutputStream().write(buff, 0, n); + } } } } @@ -67,6 +71,7 @@ public class TerminalConsoleConnector { } } } + private OutThread outThread; public TerminalConsoleConnector(IRemoteConnection connection) { @@ -76,7 +81,7 @@ public class TerminalConsoleConnector { public IRemoteConnection getConnection() { return connection; } - + public ITerminalConnector newPageConnector() { PageConnector connector = new PageConnector(); List list = new ArrayList<>(Arrays.asList(pageConnectors)); @@ -153,7 +158,7 @@ public class TerminalConsoleConnector { } public void disconnect() { - if (!remoteProcess.isCompleted()) { + if (remoteProcess != null && !remoteProcess.isCompleted()) { new Job(ConsoleMessages.DISCONNECTING) { @Override protected IStatus run(IProgressMonitor monitor) { @@ -200,7 +205,7 @@ public class TerminalConsoleConnector { @Override public OutputStream getTerminalToRemoteStream() { - return remoteProcess.getOutputStream(); + return remoteProcess != null ? remoteProcess.getOutputStream() : null; } @Override