[vlc-commits] twolame: add error checking

Tristan Matthews git at videolan.org
Wed Oct 1 13:42:02 CEST 2014


vlc/vlc-2.2 | branch: master | Tristan Matthews <tmatth at videolan.org> | Sat Sep 27 13:47:06 2014 -0400| [ef299372df5132db4bc562cae455d41f2c5e1b1c] | committer: Jean-Baptiste Kempf

twolame: add error checking

(cherry picked from commit 9b196c6333e8973ba3704af22b1d8b9d600bbd6f)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=ef299372df5132db4bc562cae455d41f2c5e1b1c
---

 modules/codec/twolame.c |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/modules/codec/twolame.c b/modules/codec/twolame.c
index b522b66..beeb276 100644
--- a/modules/codec/twolame.c
+++ b/modules/codec/twolame.c
@@ -286,6 +286,8 @@ static block_t *Encode( encoder_t *p_enc, block_t *p_aout_buf )
             return NULL;
 
         p_block = block_Alloc( i_used );
+        if( !p_block )
+            return NULL;
         memcpy( p_block->p_buffer, p_sys->p_out_buffer, i_used );
         p_block->i_length = (mtime_t)1000000 *
                 (mtime_t)MPEG_FRAME_SIZE / (mtime_t)p_enc->fmt_out.audio.i_rate;
@@ -314,8 +316,21 @@ static block_t *Encode( encoder_t *p_enc, block_t *p_aout_buf )
         i_used = twolame_encode_buffer_interleaved( p_sys->p_twolame,
                                p_sys->p_buffer, MPEG_FRAME_SIZE,
                                p_sys->p_out_buffer, MAX_CODED_FRAME_SIZE );
+        /* On error, buffer samples and return what was already encoded */
+        if( i_used < 0 )
+        {
+            msg_Err( p_enc, "encoder error: %d", i_used );
+            break;
+        }
+
         p_sys->i_nb_samples = 0;
         p_block = block_Alloc( i_used );
+        if( !p_block )
+        {
+            if( p_chain )
+                block_Release( p_chain );
+            return NULL;
+        }
         memcpy( p_block->p_buffer, p_sys->p_out_buffer, i_used );
         p_block->i_length = (mtime_t)1000000 *
                 (mtime_t)MPEG_FRAME_SIZE / (mtime_t)p_enc->fmt_out.audio.i_rate;



More information about the vlc-commits mailing list