diff m_option.c @ 9177:01a713dcaf23

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
author arpi
date Thu, 30 Jan 2003 21:28:01 +0000
parents d3b750570887
children e9a2af584986
line wrap: on
line diff
--- a/m_option.c	Thu Jan 30 19:58:43 2003 +0000
+++ b/m_option.c	Thu Jan 30 21:28:01 2003 +0000
@@ -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;
 }