summaryrefslogtreecommitdiffstats
path: root/m_option.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-30 21:28:01 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-30 21:28:01 +0000
commit1de6f0cf9e87a28585a09a24a29142851096b1ce (patch)
tree546ba0c11b6987e63c964d7ad49c98c1d1c66b90 /m_option.c
parent142ebc5c38c061d256270125dd3b3c4e18b3ffec (diff)
downloadmpv-1de6f0cf9e87a28585a09a24a29142851096b1ce.tar.bz2
mpv-1de6f0cf9e87a28585a09a24a29142851096b1ce.tar.xz
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 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9178 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'm_option.c')
-rw-r--r--m_option.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/m_option.c b/m_option.c
index 95f895ca04..418214a989 100644
--- a/m_option.c
+++ b/m_option.c
@@ -321,14 +321,14 @@ static char* print_str(m_option_t* opt, void* val) {
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 @@ static void free_str_list(void* dst) {
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;
}