]> git.sesse.net Git - vlc/blobdiff - modules/video_filter/osdmenu.c
Fix memleak.
[vlc] / modules / video_filter / osdmenu.c
index 31d49c9fdab528c9735b9368a4d246944ee9e822..8a492046d74685a09d2da76824d0b3f7f421c81d 100644 (file)
@@ -184,10 +184,7 @@ static int CreateFilter ( vlc_object_t *p_this )
 
     p_filter->p_sys = p_sys = (filter_sys_t *) malloc( sizeof(filter_sys_t) );
     if( !p_filter->p_sys )
-    {
-        msg_Err( p_filter, "out of memory" );
         return VLC_ENOMEM;
-    }
     memset( p_sys, 0, sizeof(filter_sys_t) );
 
     /* Populating struct */
@@ -231,18 +228,11 @@ static int CreateFilter ( vlc_object_t *p_this )
         p_sys->p_menu->i_x = 0;
         p_sys->p_menu->i_y = 0;
     }
-    else if( (p_sys->i_x >= 0) || (p_sys->i_y >= 0) )
+    else
     {
         p_sys->p_menu->i_x = p_sys->i_x;
         p_sys->p_menu->i_y = p_sys->i_y;
     }
-    else if( (p_sys->p_menu->i_x < 0) ||
-             (p_sys->p_menu->i_y < 0) )
-    {
-        p_sys->b_absolute = false;
-        p_sys->p_menu->i_x = 0;
-        p_sys->p_menu->i_y = 0;
-    }
 
     /* Set up p_filter */
     p_sys->i_last_date = mdate();
@@ -282,6 +272,7 @@ error:
 
     osd_MenuDelete( p_this, p_sys->p_menu );
     p_sys->p_menu = NULL;
+    free( p_sys->psz_path );
     free( p_sys->psz_file );
     free( p_sys );
     return VLC_EGENERIC;
@@ -334,6 +325,7 @@ static void DestroyFilter( vlc_object_t *p_this )
     {
         osd_MenuDelete( p_filter, p_sys->p_menu );
 
+        free( p_sys->psz_path );
         free( p_sys->psz_file );
         free( p_sys );
     }
@@ -472,8 +464,9 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t i_date )
         return NULL; /* we are too early, so wait */
 
     /* Allocate the subpicture internal data. */
-    p_spu = p_filter->pf_sub_buffer_new( p_filter );
-    if( !p_spu ) return NULL;
+    p_spu = filter_NewSubpicture( p_filter );
+    if( !p_spu )
+        return NULL;
 
     p_spu->b_ephemer = true;
     p_spu->b_fade = true;