From 73330c2ab86f1c8406464ff13db6f61a4bebe2cd Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Tue, 31 Jan 2012 15:52:38 +0000 Subject: [PATCH] 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. --- ext/mad/gstmad.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ext/mad/gstmad.c b/ext/mad/gstmad.c index bff763436a..8336638861 100644 --- a/ext/mad/gstmad.c +++ b/ext/mad/gstmad.c @@ -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; }