]> git.sesse.net Git - vlc/blobdiff - src/osd/osd.c
Fix multiple deallocation (three deallocation for the same varaible that's a bit...
[vlc] / src / osd / osd.c
index 1c1cf4a622bb04bde1eb7c850686db7a533ba291..db41f2a3bbf9d0e8a16d523acc7f35e555da38d5 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
@@ -81,11 +80,10 @@ static bool osd_ParserLoad( osd_menu_t *p_menu, const char *psz_file )
         else
             psz_type = (char*)"import-osd-xml";
 
-        p_menu->p_parser = module_Need( p_menu, "osd parser",
+        p_menu->p_parser = module_need( p_menu, "osd parser",
                                         psz_type, true );
         if( !p_menu->p_parser )
         {
-            osd_ParserUnload( p_menu );
             return false;
         }
     }
@@ -98,7 +96,7 @@ static void osd_ParserUnload( osd_menu_t *p_menu )
         image_HandlerDelete( p_menu->p_image );
 
     if( p_menu->p_parser )
-        module_Unneed( p_menu, p_menu->p_parser );
+        module_unneed( p_menu, p_menu->p_parser );
 
     free( p_menu->psz_file );
 }
@@ -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;
 }