]> git.sesse.net Git - vlc/blobdiff - modules/access/vcdx/access.c
vcdx: Fix memleaks.
[vlc] / modules / access / vcdx / access.c
index d28ad46d8daaa43bbb89bce94be2707b4125fe10..279c34a1fdc98beb17b1783c4cb25b6ee9685add 100644 (file)
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
 #include <vlc_interface.h>
 #include <vlc_input.h>
 #include <vlc_access.h>
+#include <vlc_charset.h>
 #include "vlc_keys.h"
 
 #include <cdio/cdio.h>
@@ -650,6 +651,7 @@ VCDParse( access_t * p_access, /*out*/ vcdinfo_itemid_t * p_itemid,
       psz_source = config_GetPsz( p_access, "vcd" );
 
       if( !psz_source || 0==strlen(psz_source) ) {
+        free( psz_source );
         /* Scan for a CD-ROM drive with a VCD in it. */
         char **cd_drives = cdio_get_devices_with_cap( NULL,
                             ( CDIO_FS_ANAL_SVCD | CDIO_FS_ANAL_CVD
@@ -759,7 +761,7 @@ vcd_Open( vlc_object_t *p_this, const char *psz_dev )
 
     if( !psz_dev ) return NULL;
 
-    actual_dev=strdup(psz_dev);
+    actual_dev= ToLocaleDup(psz_dev);
     if ( vcdinfo_open(&p_vcdobj, &actual_dev, DRIVER_UNKNOWN, NULL) !=
          VCDINFO_OPEN_VCD) {
       free(actual_dev);
@@ -956,6 +958,7 @@ VCDOpen ( vlc_object_t *p_this )
 
     vcdplayer_play( p_access, itemid );
 
+    free( p_access->psz_demux );
     p_access->psz_demux = strdup( "ps" );
 
 #if FIXED