changeset 12890:9a45f43bf9a0

false-use-of-get_path() memleak fixes.
author al
date Fri, 23 Jul 2004 16:10:21 +0000
parents 5ee3a571c351
children 54ea3d6e657c
files input/input.c mplayer.c
diffstat 2 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/input/input.c	Fri Jul 23 14:28:31 2004 +0000
+++ b/input/input.c	Fri Jul 23 16:10:21 2004 +0000
@@ -1484,7 +1484,10 @@
   if(!file)
     return;
   
-  if(! mp_input_parse_config(file)) {
+  if( mp_input_parse_config(file)) {
+    free(file); // release the buffer created by get_path()
+  }
+  else {
     // Try global conf dir
     file = MPLAYER_CONFDIR "/input.conf";
     if(! mp_input_parse_config(file))
--- a/mplayer.c	Fri Jul 23 14:28:31 2004 +0000
+++ b/mplayer.c	Fri Jul 23 16:10:21 2004 +0000
@@ -723,6 +723,7 @@
 int main(int argc,char* argv[]){
 
 
+char * mem_ptr;
 
 static demux_stream_t *d_audio=NULL;
 static demux_stream_t *d_video=NULL;
@@ -904,7 +905,7 @@
 
 // check codec.conf
 if(!codecs_file || !parse_codec_cfg(codecs_file)){
-  if(!parse_codec_cfg(get_path("codecs.conf"))){
+  if(!parse_codec_cfg(mem_ptr=get_path("codecs.conf"))){
     if(!parse_codec_cfg(MPLAYER_CONFDIR "/codecs.conf")){
       if(!parse_codec_cfg(NULL)){
 	mp_msg(MSGT_CPLAYER,MSGL_HINT,MSGTR_CopyCodecsConf);
@@ -913,6 +914,7 @@
       mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_BuiltinCodecsConf);
     }
   }
+  free( mem_ptr ); // release the buffer created by get_path()
 }
 
 #if 0
@@ -1083,7 +1085,8 @@
        if(!vo_font) mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CantLoadFont,font_name);
   } else {
       // try default:
-       vo_font=read_font_desc(get_path("font/font.desc"),font_factor,verbose>1);
+       vo_font=read_font_desc( mem_ptr=get_path("font/font.desc"),font_factor,verbose>1);
+       free(mem_ptr); // release the buffer created by get_path()
        if(!vo_font)
        vo_font=read_font_desc(MPLAYER_DATADIR "/font/font.desc",font_factor,verbose>1);
   }
@@ -1649,11 +1652,13 @@
     char *psub = get_path( "sub/" );
     char **tmp = sub_filenames((psub ? psub : ""), filename);
     char **tmp2 = tmp;
+    free(psub); // release the buffer created by get_path() above
     while (*tmp2)
         add_subtitles (*tmp2++, sh_video->fps, 0);
     free(tmp);
     if (set_of_sub_size == 0)
-        add_subtitles (get_path("default.sub"), sh_video->fps, 1);
+        add_subtitles (mem_ptr=get_path("default.sub"), sh_video->fps, 1);
+    free(mem_ptr); // release the buffer created by get_path()
     if (set_of_sub_size > 0)
         add_subtitles (NULL, sh_video->fps, 1);
   }