From cf6d41b51d707452d3f2d193d3cf7d9767a15fce Mon Sep 17 00:00:00 2001 From: Dmitry Atamanov Date: Fri, 6 Apr 2018 11:09:05 +0300 Subject: [PATCH] Fixes #5281 (#7489) --- lib/pure/streams.nim | 2 ++ tests/osproc/tstdin.nim | 11 +++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/pure/streams.nim b/lib/pure/streams.nim index 025a534c5f..8fb14b6f6b 100644 --- a/lib/pure/streams.nim +++ b/lib/pure/streams.nim @@ -321,6 +321,8 @@ proc readLine*(s: Stream): TaintedString = ## Reads a line from a stream `s`. Note: This is not very efficient. Raises ## `EIO` if an error occurred. result = TaintedString"" + if s.atEnd: + raise newEIO("cannot read from stream") while true: var c = readChar(s) if c == '\c': diff --git a/tests/osproc/tstdin.nim b/tests/osproc/tstdin.nim index d94c34192d..9b49ed7862 100644 --- a/tests/osproc/tstdin.nim +++ b/tests/osproc/tstdin.nim @@ -11,9 +11,8 @@ doAssert fileExists(getCurrentDir() / "tests" / "osproc" / filename) var p = startProcess(filename, getCurrentDir() / "tests" / "osproc") p.inputStream.write("5\n") p.inputStream.flush() -while true: - let line = p.outputStream.readLine() - if line != "": - echo line - else: - break + +var line = "" + +while p.outputStream.readLine(line.TaintedString): + echo line