+2007-10-27 Ludovic Courtès <ludo@gnu.org>
+
+ * NEWS: Mention `putenv' memory leak fix.
+
2007-10-24 Neil Jerram <neil@ossau.uklinux.net>
* .cvsignore: Add "lib".
** CR (ASCII 0x0d) is (again) recognized as a token delimiter by the reader
** Fixed a segmentation fault which occurred when displaying the
backtrace of a stack with a promise object (made by `delay') in it.
+** Fixed memory leak in `putenv'
\f
Changes in 1.8.3 (since 1.8.2)
2007-10-27 Ludovic Courtès <ludo@gnu.org>
+ * posix.c (scm_putenv): Make sure C_STR gets freed.
+
* fports.c (scm_i_evict_port): Expect a port, rather than a pair
containing the port. Fixes a bug in the new port table (2007-08-26).
(scm_evict_ports): Use `scm_c_port_for_each ()'.
#else
/* otherwise traditional putenv("NAME") */
rv = putenv (c_str);
+ free (c_str);
+
if (rv < 0)
SCM_SYSERROR;
#endif
char *ptr = scm_malloc (len+2);
strcpy (ptr, c_str);
strcpy (ptr+len, " ");
+
rv = putenv (ptr);
+ free (ptr);
if (rv < 0)
{
int eno = errno;
ptr = getenv (c_str);
if (ptr)
ptr[0] = '\0';
+ free (c_str);
+
return SCM_UNSPECIFIED;
}
}
/* Leave c_str in the environment. */
rv = putenv (c_str);
+ free (c_str);
+
if (rv < 0)
SCM_SYSERROR;
}