From eb66906dadc0767261915ae9c6129b56b4ba0daf Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Sat, 27 Jun 2020 12:30:29 -0700 Subject: [PATCH] Reset jline on exit The console input did not work correctly after a reboot because the console was still reading from System.in. --- .../src/main/scala/sbt/internal/util/Terminal.scala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala b/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala index bd0fb7774..b1ded7e0e 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala @@ -261,7 +261,11 @@ object Terminal { */ private[sbt] def withStreams[T](f: => T): T = if (System.getProperty("sbt.io.virtual", "true") == "true") { - withOut(withIn(f)) + try withOut(withIn(f)) + finally { + jline.TerminalFactory.reset() + console.close() + } } else f private[this] object ProxyTerminal extends Terminal { @@ -355,7 +359,7 @@ object Terminal { latch.countDown() buffer.size } - override def close(): Unit = { + override def close(): Unit = if (closed.compareAndSet(false, true)) { executor.shutdownNow() () }