From 217d88f21f11236478dd41c37b67bef5b0a06497 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 28 Oct 2014 22:10:47 +0100 Subject: TextInputStream: don't ignore unterminated last line --- NEWS | 1 + src/input/TextInputStream.cxx | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 6b2282a20..5541db7f2 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,6 @@ ver 0.19.2 (not yet released) * playlist + - m3u: don't ignore unterminated last line - m3u: recognize the file suffix ".m3u8" * decoder - faad: remove workaround for ancient libfaad2 ABI bug 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; + } } } -- cgit v1.2.3