Commit ed0c5773 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

- Undo [14667]

 * fix memleak
 * remove unused variable (psz_local always NULL...)
 * remove free(NULL)
 * remove expansion-unsafe wxDnDLocaleFree() macro variant
- Actually fix [14633] flawed logic
parent 54aaf840
...@@ -1292,13 +1292,12 @@ bool PlaylistFileDropTarget::OnDropFiles( wxCoord x, wxCoord y, ...@@ -1292,13 +1292,12 @@ bool PlaylistFileDropTarget::OnDropFiles( wxCoord x, wxCoord y,
/* Put the items in the playlist node */ /* Put the items in the playlist node */
for( size_t i = 0; i < filenames.GetCount(); i++ ) for( size_t i = 0; i < filenames.GetCount(); i++ )
{ {
char *psz_local = NULL; const char *psz_utf8 = wxDnDFromLocale( filenames[i] );
const char *psz_utf8 = wxDnDFromLocale( filenames[i], psz_local );
playlist_item_t *p_item = playlist_item_t *p_item =
playlist_ItemNew( p->p_playlist, psz_utf8, psz_utf8 ); playlist_ItemNew( p->p_playlist, psz_utf8, psz_utf8 );
playlist_NodeAddItem( p->p_playlist, p_item, p->i_current_view, playlist_NodeAddItem( p->p_playlist, p_item, p->i_current_view,
p_dest, PLAYLIST_PREPARSE, i_pos ); p_dest, PLAYLIST_PREPARSE, i_pos );
wxDnDLocaleFree( psz_utf8, psz_local ); wxDnDLocaleFree( psz_utf8 );
} }
/* FIXME: having this Rebuild() is dirty */ /* FIXME: having this Rebuild() is dirty */
......
...@@ -1261,14 +1261,13 @@ bool DragAndDrop::OnDropFiles( wxCoord, wxCoord, ...@@ -1261,14 +1261,13 @@ bool DragAndDrop::OnDropFiles( wxCoord, wxCoord,
for( size_t i = 0; i < filenames.GetCount(); i++ ) for( size_t i = 0; i < filenames.GetCount(); i++ )
{ {
char *psz_local = NULL; char *psz_utf8 = wxDnDFromLocale( filenames[i] );
const char *psz_utf8 = wxDnDFromLocale( filenames[i], psz_local );
playlist_Add( p_playlist, psz_utf8, psz_utf8, playlist_Add( p_playlist, psz_utf8, psz_utf8,
PLAYLIST_APPEND | ((i | b_enqueue) ? 0 : PLAYLIST_GO), PLAYLIST_APPEND | ((i | b_enqueue) ? 0 : PLAYLIST_GO),
PLAYLIST_END ); PLAYLIST_END );
wxDnDLocaleFree( psz_utf8, psz_local ); wxDnDLocaleFree( psz_utf8 );
} }
vlc_object_release( p_playlist ); vlc_object_release( p_playlist );
......
...@@ -98,7 +98,7 @@ DECLARE_LOCAL_EVENT_TYPE( wxEVT_INTF, 1 ); ...@@ -98,7 +98,7 @@ DECLARE_LOCAL_EVENT_TYPE( wxEVT_INTF, 1 );
/* From Locale functions to use for File Drop targets ... go figure */ /* From Locale functions to use for File Drop targets ... go figure */
#ifdef wxUSE_UNICODE #ifdef wxUSE_UNICODE
inline const char *wxDnDFromLocale( const wxChar *stupid, char *psz_local ) static inline char *wxDnDFromLocale( const wxChar *stupid )
{ {
/* /*
* FIXME: this is yet another awful and ugly bug-to-bug work-around * FIXME: this is yet another awful and ugly bug-to-bug work-around
...@@ -120,21 +120,19 @@ inline const char *wxDnDFromLocale( const wxChar *stupid, char *psz_local ) ...@@ -120,21 +120,19 @@ inline const char *wxDnDFromLocale( const wxChar *stupid, char *psz_local )
for (braindead = stupid; *braindead; braindead++); for (braindead = stupid; *braindead; braindead++);
size_t i = (braindead - stupid); size_t i = (braindead - stupid);
psz_local = (char *)malloc( i + 1 ); char *psz_local = (char *)malloc( i + 1 );
do do
psz_local[i] = (char)stupid[i]; psz_local[i] = (char)stupid[i];
while (i--); while (i--);
const char *psz_utf8 = FromLocale( psz_local ); char *psz_utf8 = FromLocaleDup( psz_local );
free( psz_local );
return psz_utf8; return psz_utf8;
} }
# define wxDnDLocaleFree( string ) free( string )
#else #else
# define wxDnDFromLocale( string, a ) wxFromLocale( string ) # define wxDnDFromLocale( string ) wxFromLocale( string )
#endif # define wxDnDLocaleFree( string ) wxLocaleFree( string )
#ifdef wxUSE_UNICODE
# define wxDnDLocaleFree( string, a ) LocaleFree( string ); free( a )
#else
# define wxDnDLocaleFree( string, a ) wxLocaleFree( string )
#endif #endif
#define WRAPCOUNT 80 #define WRAPCOUNT 80
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment