mad expects extra bytes at the end of a buffer (see discussion in
http://www.mars.org/mailman/public/mad-dev/2001-May/000262.html),
and since we inject these without the base class' knowledge, we
need to hide the bodies better.
This fixes an assert at EOS when decoding an mp3 manually without
an intervening mpegaudioparse.
*_offset = offset;
*len = consumed;
+ /* ensure that if we added some dummy guard bytes above, we don't claim
+ to have used them as they're unknown to the caller. */
+ if (mad->eos) {
+ g_assert (av >= MAD_BUFFER_GUARD);
+ av -= MAD_BUFFER_GUARD;
+ if (*_offset > av)
+ *_offset = av;
+ if (*len > av)
+ *len = av;
+ }
+
return ret;
}