[Mplayer-cvslog] CVS: main m_option.c,1.5,1.6
Arpi of Ize
arpi at mplayerhq.hu
Thu Jan 30 22:28:17 CET 2003
Update of /cvsroot/mplayer/main
In directory mail:/var/tmp.root/cvs-serv30703
Modified Files:
m_option.c
Log Message:
disable free() in string and string_list parsers. yes, it's a hack
(and a little memleak), but i can explain :)
[note it's just a few kB memleak, but it's the price of stability without
full code review/audit - there are hunderds of possible double free()]
the old config parser didn't free() strings/stringlists, but didn't even
allocate them by default. the new one always free(), and it causes
memcorruption/sig11 at cases like this:
char* dvd_device="/dev/dvd";
{"dvd-device", &dvd_device, CONF_TYPE_STRING, 0, 0, 0, NULL},
since string constansts (allocated in .TEXT segment) cannot be free()'d
Index: m_option.c
===================================================================
RCS file: /cvsroot/mplayer/main/m_option.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- m_option.c 3 Jan 2003 12:40:09 -0000 1.5
+++ m_option.c 30 Jan 2003 21:28:01 -0000 1.6
@@ -321,14 +321,14 @@
static void copy_str(m_option_t* opt,void* dst, void* src) {
if(dst && src) {
- if(VAL(dst)) free(VAL(dst));
+// if(VAL(dst)) free(VAL(dst)); //FIXME!!!
VAL(dst) = VAL(src) ? strdup(VAL(src)) : NULL;
}
}
static void free_str(void* src) {
if(src && VAL(src)){
- free(VAL(src));
+// free(VAL(src)); //FIXME!!!
VAL(src) = NULL;
}
}
@@ -365,10 +365,10 @@
if(!dst || !VAL(dst)) return;
d = VAL(dst);
-
- for(i = 0 ; d[i] != NULL ; i++)
- free(d[i]);
- free(d);
+// FIXME!!!
+// for(i = 0 ; d[i] != NULL ; i++)
+// free(d[i]);
+// free(d);
VAL(dst) = NULL;
}
More information about the MPlayer-cvslog
mailing list