From 1179355dab021be45e57c675b2ef1ecaa0d9c805 Mon Sep 17 00:00:00 2001 From: Martin Pool Date: Sun, 2 Dec 2001 08:16:15 +0000 Subject: [PATCH] Revert change from 1.39, because it causes a crash because of attempting to free a static string. (Thankyou to Paul Mackerras.) There's still a small leak here. --- loadparm.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/loadparm.c b/loadparm.c index 92b01488..f71a3bec 100644 --- a/loadparm.c +++ b/loadparm.c @@ -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); -- 2.34.1