decoder/mpcdec: ignore empty frames
https://bugs.musicpd.org/view.php?id=4656 describes a crash due to division by zero because frame.samples==0. This should never happen, but apparently can happen after seeking. The best we can do is to just ignore this frame.
This commit is contained in:
parent
3b6c285c2a
commit
29a7b2c5b5
2
NEWS
2
NEWS
|
@ -1,4 +1,6 @@
|
|||
ver 0.20.6 (not yet released)
|
||||
* decoder
|
||||
- mpcdec: fix crash (division by zero) after seeking
|
||||
|
||||
ver 0.20.5 (2017/02/20)
|
||||
* tags
|
||||
|
|
|
@ -207,6 +207,15 @@ mpcdec_decode(DecoderClient &client, InputStream &is)
|
|||
if (frame.bits == -1)
|
||||
break;
|
||||
|
||||
if (frame.samples <= 0) {
|
||||
/* empty frame - this has been observed to
|
||||
happen spuriously after seeking; skip this
|
||||
obscure frame, and hope libmpcdec
|
||||
recovers */
|
||||
cmd = client.GetCommand();
|
||||
continue;
|
||||
}
|
||||
|
||||
mpc_uint32_t ret = frame.samples;
|
||||
ret *= info.channels;
|
||||
|
||||
|
|
Loading…
Reference in New Issue