aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/generic/setenv.c56
2 files changed, 30 insertions, 31 deletions
diff --git a/ChangeLog b/ChangeLog
index 75a2941ece..f8afb393a3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+1998-05-15 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/generic/setenv.c (setenv): Remove optimization for
+ overwriting existing values if it fits.
+
1998-05-15 14:36 Ulrich Drepper <drepper@cygnus.com>
* posix/wordexp-test.c: Avoid duplicate messages.
diff --git a/sysdeps/generic/setenv.c b/sysdeps/generic/setenv.c
index baae4c59b2..22ea7e551f 100644
--- a/sysdeps/generic/setenv.c
+++ b/sysdeps/generic/setenv.c
@@ -187,50 +187,44 @@ setenv (name, value, replace)
else if (replace)
{
size_t len = strlen (*ep);
- if (len + 1 < namelen + 1 + vallen)
- {
- char *new_value;
- char *np;
+ char *new_value;
+ char *np;
- /* The existing string is too short; malloc a new one. */
+ /* The existing string is too short; malloc a new one. */
#ifdef USE_TSEARCH
- new_value = alloca (namelen + 1 + vallen);
+ new_value = alloca (namelen + 1 + vallen);
# ifdef _LIBC
- __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1),
- value, vallen);
+ __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1),
+ value, vallen);
# else
- memcpy (new_value, name, namelen);
- new_value[namelen] = '=';
- memcpy (&new_value[namelen + 1], value, vallen);
+ memcpy (new_value, name, namelen);
+ new_value[namelen] = '=';
+ memcpy (&new_value[namelen + 1], value, vallen);
# endif
- np = KNOWN_VALUE (new_value);
- if (np == NULL)
+ np = KNOWN_VALUE (new_value);
+ if (np == NULL)
#endif
+ {
+ np = malloc (namelen + 1 + vallen);
+ if (np == NULL)
{
- np = malloc (namelen + 1 + vallen);
- if (np == NULL)
- {
- UNLOCK;
- return -1;
- }
+ UNLOCK;
+ return -1;
+ }
#ifdef USE_TSEARCH
- memcpy (np, new_value, namelen + 1 + vallen);
+ memcpy (np, new_value, namelen + 1 + vallen);
#else
- memcpy (np, name, namelen);
- np[namelen] = '=';
- memcpy (&np[namelen + 1], value, vallen);
+ memcpy (np, name, namelen);
+ np[namelen] = '=';
+ memcpy (&np[namelen + 1], value, vallen);
#endif
- }
-
- /* Keep the old value around. */
- STORE_VALUE (*ep);
- *ep = np;
}
- else
- /* Overwrite the value part of the old value. */
- memcpy (&(*ep)[namelen + 1], value, vallen);
+
+ /* Keep the old value around. */
+ STORE_VALUE (*ep);
+ *ep = np;
}
UNLOCK;