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() () }