diff options
author | Max Kellermann <max@duempel.org> | 2014-11-02 14:06:05 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-11-02 14:06:05 +0100 |
commit | 303d67aed2da79d4ddaa3a52093ed42ae9da064d (patch) | |
tree | 060580f4c17b5d30d1e78e584df03c795ce4e1d7 /src/input/TextInputStream.cxx | |
parent | 575fbad254a1ce67530bf2aedc9852c89c072c3f (diff) | |
parent | 6a7f6cdacd81877276563c42fdeacad3a8deface (diff) | |
download | mpd-303d67aed2da79d4ddaa3a52093ed42ae9da064d.tar.gz mpd-303d67aed2da79d4ddaa3a52093ed42ae9da064d.tar.xz mpd-303d67aed2da79d4ddaa3a52093ed42ae9da064d.zip |
Merge tag 'v0.19.2'
Diffstat (limited to 'src/input/TextInputStream.cxx')
-rw-r--r-- | src/input/TextInputStream.cxx | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/input/TextInputStream.cxx b/src/input/TextInputStream.cxx index b79f64bdc..5a8dcc065 100644 --- a/src/input/TextInputStream.cxx +++ b/src/input/TextInputStream.cxx @@ -38,8 +38,8 @@ TextInputStream::ReadLine() while (true) { auto dest = buffer.Write(); if (dest.size < 2) { - /* end of file (or line too long): terminate - the current line */ + /* line too long: terminate the current + line */ assert(!dest.IsEmpty()); dest[0] = 0; @@ -66,7 +66,19 @@ TextInputStream::ReadLine() if (line != nullptr) return line; - if (nbytes == 0) - return nullptr; + if (nbytes == 0) { + /* end of file: see if there's an unterminated + line */ + + dest = buffer.Write(); + assert(!dest.IsEmpty()); + dest[0] = 0; + + auto r = buffer.Read(); + buffer.Clear(); + return r.IsEmpty() + ? nullptr + : r.data; + } } } |