playlist demuxers: return -1 in case of error, 0 in case of eof, 1 else; like any...
authorRafaël Carré <funman@videolan.org>
Wed, 19 Dec 2007 23:59:06 +0000 (23:59 +0000)
committerRafaël Carré <funman@videolan.org>
Wed, 19 Dec 2007 23:59:06 +0000 (23:59 +0000)
fix a corner case bug in ifo.c

13 files changed:
modules/demux/playlist/asx.c
modules/demux/playlist/b4s.c
modules/demux/playlist/dvb.c
modules/demux/playlist/gvp.c
modules/demux/playlist/ifo.c
modules/demux/playlist/itml.c
modules/demux/playlist/m3u.c
modules/demux/playlist/pls.c
modules/demux/playlist/podcast.c
modules/demux/playlist/qtl.c
modules/demux/playlist/sgimb.c
modules/demux/playlist/shoutcast.c
modules/demux/playlist/xspf.c

index 4e76dba..ffcd138 100644 (file)
@@ -251,7 +251,7 @@ static int Demux( demux_t *p_demux )
             p_sys->i_data_len += 1024;
             p_sys->psz_data = realloc( p_sys->psz_data, p_sys->i_data_len * sizeof( char * ) +1 );
         }
-        if( p_sys->i_data_len <= 0 ) return VLC_EGENERIC;
+        if( p_sys->i_data_len <= 0 ) return -1;
     }
 
     psz_parse = p_sys->psz_data;
@@ -688,7 +688,7 @@ static int Demux( demux_t *p_demux )
 #endif
     }
     HANDLE_PLAY_AND_RELEASE;
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 static int Control( demux_t *p_demux, int i_query, va_list args )
index f9d6c9f..7a61d61 100644 (file)
@@ -287,7 +287,7 @@ static int Demux( demux_t *p_demux )
     }
 
     HANDLE_PLAY_AND_RELEASE;
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 static int Control( demux_t *p_demux, int i_query, va_list args )
index 8f8c730..d6f3fa5 100644 (file)
@@ -127,7 +127,7 @@ static int Demux( demux_t *p_demux )
     }
 
     HANDLE_PLAY_AND_RELEASE;
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 static struct
index ed3aef5..dd24762 100644 (file)
@@ -222,7 +222,7 @@ static int Demux( demux_t *p_demux )
 
     p_sys->p_playlist = NULL;
 
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 static int Control( demux_t *p_demux, int i_query, va_list args )
index 9c8ab79..cba1972 100644 (file)
@@ -57,7 +57,7 @@ int E_(Import_IFO)( vlc_object_t *p_this )
         const byte_t *p_peek;
         i_peek = stream_Peek( p_demux->s, &p_peek, 8 );
 
-        if( strncmp( p_peek, "DVDVIDEO", 8 ) )
+        if( i_peek != 8 || memcmp( p_peek, "DVDVIDEO", 8 ) )
             return VLC_EGENERIC;
     }
     else
@@ -95,7 +95,7 @@ static int Demux( demux_t *p_demux )
 
     HANDLE_PLAY_AND_RELEASE;
 
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 static int Control( demux_t *p_demux, int i_query, va_list args )
index 39b31a1..20f5e6a 100644 (file)
@@ -120,7 +120,7 @@ int Demux( demux_t *p_demux )
         xml_ReaderDelete( p_xml, p_xml_reader );
     if( p_xml )
         xml_Delete( p_xml );
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 /** \brief dummy function for demux callback interface */
index 2e53b19..9cfda44 100644 (file)
@@ -219,7 +219,7 @@ static int Demux( demux_t *p_demux )
         }
     }
     HANDLE_PLAY_AND_RELEASE;
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 static int Control( demux_t *p_demux, int i_query, va_list args )
index caf5c36..135c264 100644 (file)
@@ -235,7 +235,7 @@ static int Demux( demux_t *p_demux )
     }
 
     HANDLE_PLAY_AND_RELEASE;
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 static int Control( demux_t *p_demux, int i_query, va_list args )
index 60389da..d514764 100644 (file)
@@ -320,7 +320,7 @@ static int Demux( demux_t *p_demux )
     }
 
     HANDLE_PLAY_AND_RELEASE;
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 static int Control( demux_t *p_demux, int i_query, va_list args )
index 4cdc1be..8e892d9 100644 (file)
@@ -375,7 +375,7 @@ static int Demux( demux_t *p_demux )
     free( psz_src );
     free( psz_mimetype );
 
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 static int Control( demux_t *p_demux, int i_query, va_list args )
index 4e284e2..f4c3ca3 100644 (file)
@@ -377,7 +377,7 @@ static int Demux ( demux_t *p_demux )
     if( !p_child )
     {
         msg_Err( p_demux, "A valid playlistitem could not be created" );
-        return VLC_EGENERIC;
+        return -1;
     }
 
     input_ItemCopyOptions( p_current_input, p_child );
@@ -406,7 +406,7 @@ static int Demux ( demux_t *p_demux )
 
     input_ItemAddSubItem( p_current_input, p_child );
     HANDLE_PLAY_AND_RELEASE
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 static int Control( demux_t *p_demux, int i_query, va_list args )
index e54202c..e92d93e 100644 (file)
@@ -147,7 +147,7 @@ static int Demux( demux_t *p_demux )
 
     HANDLE_PLAY_AND_RELEASE;
     p_sys->p_playlist = NULL;
-    return -1; /* Needed for correct operation of go back */
+    return 0; /* Needed for correct operation of go back */
 }
 
 #define GET_VALUE( a ) \
index 600439d..acc6d28 100644 (file)
@@ -70,7 +70,7 @@ void E_(Close_xspf)( vlc_object_t *p_this )
  */
 int Demux( demux_t *p_demux )
 {
-    int i_ret = VLC_SUCCESS;
+    int i_ret = 1;
     xml_t *p_xml = NULL;
     xml_reader_t *p_xml_reader = NULL;
     char *psz_name = NULL;
@@ -83,43 +83,44 @@ int Demux( demux_t *p_demux )
     /* create new xml parser from stream */
     p_xml = xml_Create( p_demux );
     if( !p_xml )
-        i_ret = VLC_ENOMOD;
+        i_ret = -1;
     else
     {
         p_xml_reader = xml_ReaderCreate( p_xml, p_demux->s );
         if( !p_xml_reader )
-            i_ret = VLC_EGENERIC;
+            i_ret = -1;
     }
 
     /* locating the root node */
-    if( i_ret == VLC_SUCCESS )
+    if( i_ret == 1 )
     {
         do
         {
             if( xml_ReaderRead( p_xml_reader ) != 1 )
             {
                 msg_Err( p_demux, "can't read xml stream" );
-                i_ret = VLC_EGENERIC;
+                i_ret = -1;
             }
         } while( i_ret == VLC_SUCCESS &&
                  xml_ReaderNodeType( p_xml_reader ) != XML_READER_STARTELEM );
     }
     /* checking root node name */
-    if( i_ret == VLC_SUCCESS )
+    if( i_ret == 1 )
     {
         psz_name = xml_ReaderName( p_xml_reader );
         if( !psz_name || strcmp( psz_name, "playlist" ) )
         {
             msg_Err( p_demux, "invalid root node name: %s", psz_name );
-            i_ret = VLC_EGENERIC;
+            i_ret = -1;
         }
         FREE_NAME();
     }
 
-    if( i_ret == VLC_SUCCESS )
+    if( i_ret == 1 )
         i_ret = parse_playlist_node( p_demux, p_playlist, p_current_input,
-                                     p_xml_reader, "playlist" )
-                                     ? VLC_SUCCESS : VLC_EGENERIC;
+                                     p_xml_reader, "playlist" ) ? 0 : -1;
+
+
     HANDLE_PLAY_AND_RELEASE;
     if( p_xml_reader )
         xml_ReaderDelete( p_xml, p_xml_reader );