diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c
index d08177e9ebc22818837f3e62713cc21cbac6eb8c..169254f5d7aa08b379c964c8f636993f5bf1ea19 100644
--- a/libavcodec/mpegaudiodec.c
+++ b/libavcodec/mpegaudiodec.c
@@ -1572,6 +1572,9 @@ static int mp_decode_frame(MPADecodeContext *s, OUT_INT *samples,
     default:
         nb_frames = mp_decode_layer3(s);
 
+        if (nb_frames < 0)
+            return nb_frames;
+
         s->last_buf_size=0;
         if (s->in_gb.buffer) {
             align_get_bits(&s->gb);