[vlc-devel] [PATCH] packetizer/h264: fix resource deallocation during Close

Filip Roséen filip at atch.se
Tue Feb 7 02:35:46 CET 2017


The previous loop condition suffers from an off-by-one error, meaning
that the last resource in p_sys->pp_sps and p_sys->pp_pps would never
be released if populated.

fixes #17987

--

Personally I am not a big fan of loop-conditions such as these (fixed)
ones (because they are very error-prone), though given that this is
the aesthetics used in the rest of the relevant translation-unit I
will refrain from refactoring it.
---
 modules/packetizer/h264.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c
index 1b455af479..4d2db65f76 100644
--- a/modules/packetizer/h264.c
+++ b/modules/packetizer/h264.c
@@ -330,12 +330,12 @@ static void Close( vlc_object_t *p_this )
 
     if( p_sys->p_frame )
         block_ChainRelease( p_sys->p_frame );
-    for( i = 0; i < H264_SPS_ID_MAX; i++ )
+    for( i = 0; i <= H264_SPS_ID_MAX; i++ )
     {
         if( p_sys->pp_sps[i] )
             block_Release( p_sys->pp_sps[i] );
     }
-    for( i = 0; i < H264_PPS_ID_MAX; i++ )
+    for( i = 0; i <= H264_PPS_ID_MAX; i++ )
     {
         if( p_sys->pp_pps[i] )
             block_Release( p_sys->pp_pps[i] );
-- 
2.11.1



More information about the vlc-devel mailing list