]> git.sesse.net Git - vlc/commitdiff
Fix resource deadlock in OSDmenu code.
authorJean-Paul Saman <jpsaman@videolan.org>
Sun, 10 Aug 2008 14:06:06 +0000 (22:06 +0800)
committerJean-Paul Saman <jpsaman@videolan.org>
Sun, 10 Aug 2008 14:06:52 +0000 (22:06 +0800)
modules/video_filter/osdmenu.c
src/osd/osd.c

index 8a492046d74685a09d2da76824d0b3f7f421c81d..96ae0fd46380c96a8be7bf3969349cfb676da164 100644 (file)
@@ -270,8 +270,6 @@ static int CreateFilter ( vlc_object_t *p_this )
 error:
     msg_Err( p_filter, "osdmenu filter discarded" );
 
-    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 );
index 1c1cf4a622bb04bde1eb7c850686db7a533ba291..7e1f78e1404737adf3b1924e89a348be0a332f83 100644 (file)
@@ -68,7 +68,6 @@ static bool osd_ParserLoad( osd_menu_t *p_menu, const char *psz_file )
     if( !p_menu->p_image || !p_menu->psz_file )
     {
         msg_Err( p_menu, "unable to load images, aborting .." );
-        osd_ParserUnload( p_menu );
         return true;
     }
     else
@@ -85,7 +84,6 @@ static bool osd_ParserLoad( osd_menu_t *p_menu, const char *psz_file )
                                         psz_type, true );
         if( !p_menu->p_parser )
         {
-            osd_ParserUnload( p_menu );
             return false;
         }
     }
@@ -200,6 +198,7 @@ osd_menu_t *__osd_MenuCreate( vlc_object_t *p_this, const char *psz_file )
     return p_osd;
 
 error:
+    vlc_mutex_unlock( lockval.p_address );
     __osd_MenuDelete( p_this, p_osd );
     return NULL;
 }