Revert change from 1.39, because it causes a crash because of
authorMartin Pool <mbp@samba.org>
Sun, 2 Dec 2001 08:16:15 +0000 (08:16 +0000)
committerMartin Pool <mbp@samba.org>
Sun, 2 Dec 2001 08:16:15 +0000 (08:16 +0000)
attempting to free a static string.  (Thankyou to Paul Mackerras.)
There's still a small leak here.

loadparm.c

index 92b0148..f71a3be 100644 (file)
@@ -386,9 +386,16 @@ static void init_service(service *pservice)
 
 
 /**
- * Assign a copy of @p v to @p *s, freeing any existing values and
- * handling NULL strings.  @p *v must be initialized when this is
- * called, either to NULL or a malloc'd string.
+ * Assign a copy of @p v to @p *s.  Handles NULL strings.  @p *v must
+ * be initialized when this is called, either to NULL or a malloc'd
+ * string.
+ *
+ * @fixme There is a small leak here in that sometimes the existing
+ * value will be dynamically allocated, and the old copy is lost.
+ * However, we can't always deallocate the old value, because in the
+ * case of sDefault, it points to a static string.  It would be nice
+ * to have either all-strdup'd values, or to never need to free
+ * memory.
  **/
 static void string_set(char **s, const char *v)
 {
@@ -396,8 +403,6 @@ static void string_set(char **s, const char *v)
                *s = NULL;
                return;
        }
-       if (*s)
-               free(*s);
        *s = strdup(v);
        if (!*s)
                exit_cleanup(RERR_MALLOC);