diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/generic/setenv.c | 56 |
2 files changed, 30 insertions, 31 deletions
@@ -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; |