mad: ensure we do not confuse the base class with our buffer guard

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.
This commit is contained in:
Vincent Penquerc'h 2012-01-31 15:52:38 +00:00
parent 4322fd0752
commit 73330c2ab8

View file

@ -415,6 +415,17 @@ exit:
*_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;
}