]> git.sesse.net Git - vlc/blobdiff - modules/access/directory.c
test code cleanup
[vlc] / modules / access / directory.c
index f4ceb264ce1df8b23636d22de461af7a2fc1b5c1..9d37d5eab519a0540b44ac0f7dc80589b280088b 100644 (file)
@@ -146,6 +146,13 @@ static int Open( vlc_object_t *p_this )
 {
     access_t *p_access = (access_t*)p_this;
 
+    if( !p_access->psz_path )
+        return VLC_EGENERIC;
+
+    struct stat st;
+    if( !stat( p_access->psz_path, &st ) && !S_ISDIR( st.st_mode ) )
+        return VLC_EGENERIC;
+
     DIR *handle = OpenDir (p_this, p_access->psz_path);
     if (handle == NULL)
         return VLC_EGENERIC;
@@ -259,7 +266,7 @@ static ssize_t Read( access_t *p_access, uint8_t *p_buffer, size_t i_len)
 
     playlist_Signal( p_playlist );
 
-    if( psz_name ) free( psz_name );
+    free( psz_name );
     vlc_object_release( p_input );
     vlc_object_release( p_playlist );
 
@@ -448,7 +455,7 @@ static int ReadDir( playlist_t *p_playlist, const char *psz_name,
             psz_parser = ptr + 1;
         }
     }
-    if( psz_ignore ) free( psz_ignore );
+    free( psz_ignore );
 
     /* While we still have entries in the directory */
     for( i = 0; i < i_dir_content; i++ )
@@ -523,25 +530,27 @@ static int ReadDir( playlist_t *p_playlist, const char *psz_name,
                 {
                     if( p_current_input )
                         input_ItemCopyOptions( p_current_input, p_input );
-                    playlist_BothAddInput( p_playlist, p_input,
+                    int i_ret = playlist_BothAddInput( p_playlist, p_input,
                                            p_parent_category,
                                            PLAYLIST_APPEND|PLAYLIST_PREPARSE|
                                            PLAYLIST_NO_REBUILD,
                                            PLAYLIST_END, NULL, NULL,
                                            VLC_FALSE );
                     vlc_gc_decref( p_input );
+                    if( i_ret != VLC_SUCCESS )
+                        return VLC_EGENERIC;
                 }
             }
         }
     }
 
     for( i = 0; i < i_extensions; i++ )
-        if( ppsz_extensions[i] ) free( ppsz_extensions[i] );
-    if( ppsz_extensions ) free( ppsz_extensions );
+        free( ppsz_extensions[i] );
+    free( ppsz_extensions );
 
     for( i = 0; i < i_dir_content; i++ )
-        if( pp_dir_content[i] ) free( pp_dir_content[i] );
-    if( pp_dir_content ) free( pp_dir_content );
+        free( pp_dir_content[i] );
+    free( pp_dir_content );
 
     return i_return;
 }