[vlc-devel] commit: Fix #1487 - race condition ( Rafaël Carré )

git version control git at videolan.org
Tue May 6 23:55:08 CEST 2008


vlc | branch: master | Rafaël Carré <funman at videolan.org> | Tue May  6 23:55:58 2008 +0200| [82a358acc2f5a2d2b795b4d5ef9458972938ffa2]

Fix #1487 - race condition

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=82a358acc2f5a2d2b795b4d5ef9458972938ffa2
---

 src/playlist/control.c |    1 +
 src/playlist/engine.c  |    4 +++-
 2 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/playlist/control.c b/src/playlist/control.c
index d07f5d1..bbaa74b 100644
--- a/src/playlist/control.c
+++ b/src/playlist/control.c
@@ -437,6 +437,7 @@ playlist_item_t * playlist_NextItem( playlist_t *p_playlist )
                                    p_playlist->status.p_item );
 
         p_playlist->i_current_index++;
+        assert( p_playlist->i_current_index <= p_playlist->current.i_size );
         if( p_playlist->i_current_index == p_playlist->current.i_size )
         {
             if( !b_loop || p_playlist->current.i_size == 0 ) return NULL;
diff --git a/src/playlist/engine.c b/src/playlist/engine.c
index f39f603..5e0cecd 100644
--- a/src/playlist/engine.c
+++ b/src/playlist/engine.c
@@ -352,7 +352,9 @@ check_input:
          *  - Request, running requested -> start new item
          *  - Request, stopped requested -> collect garbage
         */
-        if( p_playlist->request.i_status != PLAYLIST_STOPPED )
+        int i_status = p_playlist->request.b_request ?
+            p_playlist->request.i_status : p_playlist->status.i_status;
+        if( i_status != PLAYLIST_STOPPED )
         {
             msg_Dbg( p_playlist, "starting new item" );
             p_item = playlist_NextItem( p_playlist );




More information about the vlc-devel mailing list