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:
parent
5355335f19
commit
9fa3984a2f
2
NEWS
2
NEWS
|
@ -3,6 +3,8 @@ ver 0.22.10 (not yet released)
|
|||
- support "albumart" for virtual tracks in CUE sheets
|
||||
* database
|
||||
- simple: fix crash bug
|
||||
* input
|
||||
- curl: fix crash bug after stream with Icy metadata was closed by peer
|
||||
|
||||
ver 0.22.9 (2021/06/23)
|
||||
* database
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue