input/icy: adjust offset at end of stream in Read()
ProxyInputStream::Read() assigns the `offset` field, which is the wrong offset because it does not consider Icy metadata removed from the stream. Therefore, after every ProxyInputStream::Read() call, IcyInputStream::Read() needs to override this offset. This was missing at the end of the stream, when Read()==0. Closes https://github.com/MusicPlayerDaemon/MPD/issues/1216
This commit is contained in:
@@ -104,8 +104,11 @@ IcyInputStream::Read(std::unique_lock<Mutex> &lock,
|
||||
|
||||
while (true) {
|
||||
size_t nbytes = ProxyInputStream::Read(lock, ptr, read_size);
|
||||
if (nbytes == 0)
|
||||
if (nbytes == 0) {
|
||||
assert(IsEOF());
|
||||
offset = override_offset;
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t result = parser->ParseInPlace(ptr, nbytes);
|
||||
if (result > 0) {
|
||||
|
Reference in New Issue
Block a user