From cfd6e9867ede236878072ed630478685fd43cba0 Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Thu, 8 Jun 2017 11:29:59 +0100 Subject: [PATCH] Bug 525666: Fix NPE when DebuggerConsole closes before async code can run Fix the async calls that can run after the DebuggerConsole is closed and removed so that they can't NPE. Change-Id: I7905ee18a92be0ff5de25a4c8d770a694b06bfe1 --- .../gdb/internal/ui/console/GdbBasicCliConsole.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbBasicCliConsole.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbBasicCliConsole.java index 1b4684a0896..4cb3ab321bf 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbBasicCliConsole.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbBasicCliConsole.java @@ -128,7 +128,10 @@ public class GdbBasicCliConsole extends IOConsole implements IGDBDebuggerConsole int bufferLines = store.getInt(IGdbDebugPreferenceConstants.PREF_CONSOLE_BUFFERLINES); Display.getDefault().asyncExec(() -> { - getInputStream().setColor(Display.getDefault().getSystemColor(SWT.COLOR_GREEN)); + IOConsoleInputStream inputStream = getInputStream(); + if (inputStream != null) { + inputStream.setColor(Display.getDefault().getSystemColor(SWT.COLOR_GREEN)); + } fErrorStream.setColor(Display.getDefault().getSystemColor(SWT.COLOR_RED)); setInvertedColors(enabled); @@ -235,10 +238,15 @@ public class GdbBasicCliConsole extends IOConsole implements IGDBDebuggerConsole byte[] b = new byte[1024]; int read = 0; do { - read = getInputStream().read(b); + IOConsoleInputStream inputStream = getInputStream(); + if (inputStream == null) { + break; + } + read = inputStream.read(b); if (read > 0) { fProcess.getOutputStream().write(b, 0, read); } + } while (read >= 0); } catch (IOException e) { }