]> git.sesse.net Git - vlc/commitdiff
Use free() instead of LocaleFree() for utf8_readdir() result
authorRémi Denis-Courmont <rem@videolan.org>
Fri, 10 Nov 2006 21:50:39 +0000 (21:50 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Fri, 10 Nov 2006 21:50:39 +0000 (21:50 +0000)
include/charset.h
include/vlc_symbols.h
modules/control/http/util.c
modules/gui/ncurses.c
modules/misc/gnutls.c
src/misc/unicode.c

index 7f70e3faf4e5d165bc230cc3304380240aae80b2..56c1b6f7cb8ab3c9a2eac7f4b84121b732f93ab2 100644 (file)
@@ -40,7 +40,7 @@ VLC_EXPORT( char *, ToLocale, ( const char * ) );
 VLC_EXPORT( int, utf8_open, ( const char *filename, int flags, mode_t mode ) );
 VLC_EXPORT( FILE *, utf8_fopen, ( const char *filename, const char *mode ) );
 VLC_EXPORT( void *, utf8_opendir, ( const char *dirname ) );
-VLC_EXPORT( const char *, utf8_readdir, ( void *dir ) );
+VLC_EXPORT( char *, utf8_readdir, ( void *dir ) );
 VLC_EXPORT( int, utf8_scandir, ( const char *dirname, char ***namelist, int (*select)( const char * ), int (*compar)( const char **, const char ** ) ) );
 VLC_EXPORT( int, utf8_stat, ( const char *filename, void *buf ) );
 VLC_EXPORT( int, utf8_lstat, ( const char *filename, void *buf ) );
index 933780962d97bf062c30ad55dc61348171cb111f..3c7ad98428aa8a5d4a674a31b865418be1efebca 100644 (file)
@@ -468,7 +468,7 @@ struct module_symbols_t
     void *vlc_HashRetrieve_deprecated;
     void * (*utf8_opendir_inner) (const char *dirname);
     FILE * (*utf8_fopen_inner) (const char *filename, const char *mode);
-    const char * (*utf8_readdir_inner) (void *dir);
+    char * (*utf8_readdir_inner) (void *dir);
     int (*utf8_stat_inner) (const char *filename, void *buf);
     int (*utf8_lstat_inner) (const char *filename, void *buf);
     char * (*FromLocaleDup_inner) (const char *);
index b89a73c8e333691aeacafe240deda8616a01771c..9dc7d8f7053419e103d0c063251ccf683a0c8b11 100644 (file)
@@ -206,7 +206,7 @@ int E_(ParseDirectory)( intf_thread_t *p_intf, char *psz_root,
             continue;
 
         sprintf( dir, "%s%c%s", psz_dir, sep, psz_filename );
-        LocaleFree( psz_filename );
+        free( psz_filename );
 
         if( E_(ParseDirectory)( p_intf, psz_root, dir ) )
         {
index e0566b0e2235fe8f2ab90a5829daa7d6e419c321..b5576dac9d43479e8f0925113cc04b2e9a17aac9 100644 (file)
@@ -1945,7 +1945,7 @@ static void ReadDir( intf_thread_t *p_intf )
                 ( strlen( psz_entry ) && psz_entry[0] == '.' ) &&
                 strcmp( psz_entry, ".." ) )
             {
-                LocaleFree( psz_entry );
+                free( psz_entry );
                 psz_entry = utf8_readdir( p_current_dir );
                 continue;
             }
@@ -1982,7 +1982,7 @@ static void ReadDir( intf_thread_t *p_intf )
             }
 
             free( psz_uri );
-            LocaleFree( psz_entry );
+            free( psz_entry );
             /* Read next entry */
             psz_entry = utf8_readdir( p_current_dir );
         }
index 7ee91883dd94ad7271549783ed829c7a76e14422..6956b23ce3c153dd7196c76e111b52292945b259 100644 (file)
@@ -504,13 +504,13 @@ gnutls_Addx509Directory( vlc_object_t *p_this,
         char *psz_filename;
         int check;
 
-        if( ( strcmp( ".", psz_dirent ) == 0 )
+        if( (psz_dirent == NULL)
+        || ( strcmp( ".", psz_dirent ) == 0 )
          || ( strcmp( "..", psz_dirent ) == 0 ) )
             continue;
 
-        check = asprintf( &psz_filename, "%s/%s", psz_dirname,
-                              psz_dirent );
-        LocaleFree( psz_dirent );
+        check = asprintf( &psz_filename, "%s/%s", psz_dirname, psz_dirent );
+        free( psz_dirent );
         if( check == -1 )
             continue;
 
index 0b500cf941ce8fdc19e79b3708119736df807744..dc3ce2798a2b49315cfa40b4610455aeed1f9eac 100644 (file)
@@ -470,7 +470,10 @@ void *utf8_opendir( const char *dirname )
     return NULL;
 }
 
-const char *utf8_readdir( void *dir )
+
+#define darwin_readdir_fix( a ) __vlc_fix_readdir_charset (NULL, a)
+
+char *utf8_readdir( void *dir )
 {
     struct dirent *ent;
 
@@ -478,7 +481,11 @@ const char *utf8_readdir( void *dir )
     if( ent == NULL )
         return NULL;
 
-    return FromLocale( ent->d_name );
+#ifdef __APPLE__
+    return darwin_readdir_fix( ent->d_name );
+#else
+    return strdup( ent->d_name );
+#endif
 }
 
 static int dummy_select( const char *str )
@@ -507,25 +514,21 @@ int utf8_scandir( const char *dirname, char ***namelist,
         while( ( entry = utf8_readdir( dir ) ) != NULL )
         {
             char **newtab;
-            char *utf_entry = strdup( entry );
-            LocaleFree( entry );
-            if( utf_entry == NULL )
-                goto error;
 
-            if( !select( utf_entry ) )
+            if( !select( entry ) )
             {
-                free( utf_entry );
+                free( entry );
                 continue;
             }
 
             newtab = realloc( tab, sizeof( char * ) * (num + 1) );
             if( newtab == NULL )
             {
-                free( utf_entry );
+                free( entry );
                 goto error;
             }
             tab = newtab;
-            tab[num++] = utf_entry;
+            tab[num++] = entry;
         }
         vlc_closedir_wrapper( dir );