Fix wx DnD once more.
[vlc.git] / modules / gui / wxwidgets / wxwidgets.hpp
index c8e20df..d35e644 100644 (file)
@@ -39,6 +39,7 @@
 
 #include <vlc/vlc.h>
 #include <vlc/intf.h>
+#include "charset.h"
 
 #include <wx/wx.h>
 #define SLIDER_MAX_POS 10000
@@ -97,7 +98,7 @@ DECLARE_LOCAL_EVENT_TYPE( wxEVT_INTF, 1 );
 
 /* From Locale functions to use for File Drop targets ... go figure */
 #ifdef wxUSE_UNICODE
-inline const char *wxDnDFromLocale( const wxChar *stupid )
+inline const char *wxDnDFromLocale( const wxChar *stupid, char *psz_local )
 {
     /*
      * FIXME: this is yet another awful and ugly bug-to-bug work-around
@@ -119,19 +120,22 @@ inline const char *wxDnDFromLocale( const wxChar *stupid )
     for (braindead = stupid; *braindead; braindead++);
 
     size_t i = (braindead - stupid);
-    char *psz_local = (char *)malloc( i + 1 );
+    psz_local = (char *)malloc( i + 1 );
     do
         psz_local[i] = (char)stupid[i];
     while (i--);
 
     const char *psz_utf8 = FromLocale( psz_local );
-    free( psz_local );
     return psz_utf8;
 }
 #else
-#   define wxDnDFromLocale( string ) wxFromLocale( string )
+#   define wxDnDFromLocale( string, a ) wxFromLocale( string )
+#endif
+#ifdef wxUSE_UNICODE
+#   define wxDnDLocaleFree( string, a ) LocaleFree( string ); free( a )
+#else
+#   define wxDnDLocaleFree( string, a ) wxLocaleFree( string )
 #endif
-#define wxDnDLocaleFree(string) LocaleFree( string )
 
 #define WRAPCOUNT 80