]> git.sesse.net Git - vlc/commitdiff
visual: check for NULL before free
authorEdward Wang <edward.c.wang@compdigitec.com>
Sat, 26 May 2012 23:04:57 +0000 (19:04 -0400)
committerJean-Baptiste Kempf <jb@videolan.org>
Sun, 27 May 2012 06:41:43 +0000 (08:41 +0200)
Close #6879

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
modules/visualization/visual/visual.c

index 964924c34be47b15d114a352cffc2a2d421dab37..a91faa72b2d695f7650e34e7ea3c93c256ab470b 100644 (file)
@@ -373,20 +373,23 @@ static void Close( vlc_object_t *p_this )
     for( int i = 0; i < p_sys->i_effect; i++ )
     {
 #define p_effect p_sys->effect[i]
-        if( !strncmp( p_effect->psz_name, "spectrum", strlen( "spectrum" ) ) )
+        if( p_effect->p_data != NULL )
         {
-            spectrum_data *p_data = p_effect->p_data;
-            free( p_data->peaks );
-            free( p_data->prev_heights );
-            free( p_data->p_prev_s16_buff );
-        }
-        if( !strncmp( p_effect->psz_name, "spectrometer", strlen( "spectrometer" ) ) )
-        {
-            spectrometer_data *p_data = p_effect->p_data;
-            free( p_data->peaks );
-            free( p_data->p_prev_s16_buff );
+            if( !strncmp( p_effect->psz_name, "spectrum", strlen( "spectrum" ) ) )
+            {
+                spectrum_data* p_data = p_effect->p_data;
+                free( p_data->peaks );
+                free( p_data->prev_heights );
+                free( p_data->p_prev_s16_buff );
+            }
+            if( !strncmp( p_effect->psz_name, "spectrometer", strlen( "spectrometer" ) ) )
+            {
+                spectrometer_data* p_data = p_effect->p_data;
+                free( p_data->peaks );
+                free( p_data->p_prev_s16_buff );
+            }
+            free( p_effect->p_data );
         }
-        free( p_effect->p_data );
         free( p_effect->psz_args );
         free( p_effect );
 #undef p_effect