[vlc-devel] [PATCH] bluray: blurayOpen(): use blurayClose() to clean up after an error

Petri Hintukainen phintuka at gmail.com
Sat Jan 16 13:44:10 CET 2016


---
 modules/access/bluray.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/modules/access/bluray.c b/modules/access/bluray.c
index 60b7b6c..75a2aa0 100644
--- a/modules/access/bluray.c
+++ b/modules/access/bluray.c
@@ -500,16 +500,15 @@ static int blurayOpen(vlc_object_t *object)
     /* If we're passed a block device, try to convert it to the mount point. */
     FindMountPoint(&p_sys->psz_bd_path);
 
+    vlc_mutex_init(&p_sys->pl_info_lock);
+    vlc_mutex_init(&p_sys->bdj_overlay_lock);
+    var_AddCallback( p_demux->p_input, "intf-event", onIntfEvent, p_demux );
+
     p_sys->bluray = bd_open(p_sys->psz_bd_path, NULL);
     if (!p_sys->bluray) {
-        free(p_sys->psz_bd_path);
-        free(p_sys);
-        return VLC_EGENERIC;
+        goto error;
     }
 
-    vlc_mutex_init(&p_sys->pl_info_lock);
-    vlc_mutex_init(&p_sys->bdj_overlay_lock);
-
     /* Warning the user about AACS/BD+ */
     const BLURAY_DISC_INFO *disc_info = bd_get_disc_info(p_sys->bluray);
 
@@ -633,8 +632,6 @@ static int blurayOpen(vlc_object_t *object)
     if (unlikely(p_sys->p_out == NULL))
         goto error;
 
-    var_AddCallback( p_demux->p_input, "intf-event", onIntfEvent, p_demux );
-
     blurayResetParser(p_demux);
     if (!p_sys->p_parser) {
         msg_Err(p_demux, "Failed to create TS demuxer");
@@ -672,8 +669,9 @@ static void blurayClose(vlc_object_t *object)
      * This will close all the overlays before we release p_vout
      * bd_close(NULL) can crash
      */
-    assert(p_sys->bluray);
-    bd_close(p_sys->bluray);
+    if (p_sys->bluray) {
+        bd_close(p_sys->bluray);
+    }
 
     blurayReleaseVout(p_demux);
 
-- 
2.5.0



More information about the vlc-devel mailing list