+2002-12-11 Bruno Haible <bruno@clisp.org>
+
+ * setenv.c (alloca): Fall back to malloc.
+ (freea): New macro.
+ (setenv): Use freea() to free memory allocated with alloca().
+
2003-01-12 Bruno Haible <bruno@clisp.org>
* classpath.h: New file.
# include <unistd.h>
#endif
+/* For those losing systems which don't have 'alloca' we have to add
+ some additional code emulating it. */
+#if _LIBC || HAVE_ALLOCA
+# define freea(p) /* nothing */
+#else
+# define alloca(n) malloc (n)
+# define freea(p) free (p)
+#endif
+
#if !_LIBC
# define __environ environ
# ifndef HAVE_ENVIRON_DECL
new_environ[size] = (char *) malloc (namelen + 1 + vallen);
if (new_environ[size] == NULL)
{
+#ifdef USE_TSEARCH
+ freea (new_value);
+#endif
__set_errno (ENOMEM);
UNLOCK;
return -1;
user string or not. */
STORE_VALUE (new_environ[size]);
}
+#ifdef USE_TSEARCH
+ freea (new_value);
+#endif
}
if (__environ != last_environ)
np = malloc (namelen + 1 + vallen);
if (np == NULL)
{
+#ifdef USE_TSEARCH
+ freea (new_value);
+#endif
UNLOCK;
return -1;
}
/* And remember the value. */
STORE_VALUE (np);
}
+#ifdef USE_TSEARCH
+ freea (new_value);
+#endif
}
*ep = np;