]> git.sesse.net Git - vlc/blobdiff - src/control/media_list_player.c
check if media_list_player->media_list is null before locking - fixes #1524
[vlc] / src / control / media_list_player.c
index 0bca13f562b84dbcec6d715a610378b9172a024b..a1239f8c295d6e9292dacdaaa0f602ec9616aa4d 100644 (file)
@@ -40,6 +40,7 @@ get_next_path( libvlc_media_list_player_t * p_mlp )
     libvlc_media_list_path_t ret;
     libvlc_media_list_t * p_parent_of_playing_item;
     libvlc_media_list_t * p_sublist_of_playing_item;
+
     p_sublist_of_playing_item = libvlc_media_list_sublist_at_path(
                             p_mlp->p_mlist,
                             p_mlp->current_playing_item_path );
@@ -185,6 +186,8 @@ set_current_playing_item( libvlc_media_list_player_t * p_mlp,
                           libvlc_media_list_path_t path,
                           libvlc_exception_t * p_e )
 {
+    VLC_UNUSED(p_e);
+
     libvlc_media_descriptor_t * p_md;
     
     p_md = libvlc_media_list_item_at_path( p_mlp->p_mlist, path ); 
@@ -243,8 +246,6 @@ libvlc_media_list_player_new( libvlc_instance_t * p_instance,
                                                        p_e );
     libvlc_event_manager_register_event_type( p_mlp->p_event_manager,
             libvlc_MediaListPlayerNextItemSet, p_e );
-    libvlc_event_manager_register_event_type( p_mlp->p_event_manager,
-            libvlc_MediaListPlayerNextItemSet, p_e );
 
     return p_mlp;
 }
@@ -265,6 +266,8 @@ void libvlc_media_list_player_set_media_instance(
                                      libvlc_media_instance_t * p_mi,
                                      libvlc_exception_t * p_e )
 {
+    VLC_UNUSED(p_e);
+
     vlc_mutex_lock( &p_mlp->object_lock );
 
     if( p_mlp->p_mi )
@@ -340,8 +343,9 @@ void libvlc_media_list_player_pause( libvlc_media_list_player_t * p_mlp,
 /**************************************************************************
  *        is_playing (Public)
  **************************************************************************/
-int libvlc_media_list_player_is_playing( libvlc_media_list_player_t * p_mlp,
-                                         libvlc_exception_t * p_e )
+int
+libvlc_media_list_player_is_playing( libvlc_media_list_player_t * p_mlp,
+                                     libvlc_exception_t * p_e )
 {
     libvlc_state_t state = libvlc_media_instance_get_state( p_mlp->p_mi, p_e );
     return (state == libvlc_Opening) || (state == libvlc_Buffering) ||
@@ -424,6 +428,12 @@ void libvlc_media_list_player_next( libvlc_media_list_player_t * p_mlp,
                                     libvlc_exception_t * p_e )
 {    
     libvlc_media_list_path_t path;
+
+    if (! p_mlp->p_mlist )
+    {
+        libvlc_exception_raise( p_e, "No more element to play" );
+        return;
+    }
     
     libvlc_media_list_lock( p_mlp->p_mlist );