1998-05-15  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/setenv.c (setenv): Remove optimization for
	overwriting existing values if it fits.
This commit is contained in:
Ulrich Drepper 1998-05-15 15:28:15 +00:00
parent b17277cfa2
commit cb37d8429a
2 changed files with 32 additions and 33 deletions

View File

@ -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> 1998-05-15 14:36 Ulrich Drepper <drepper@cygnus.com>
* posix/wordexp-test.c: Avoid duplicate messages. * posix/wordexp-test.c: Avoid duplicate messages.

View File

@ -187,50 +187,44 @@ setenv (name, value, replace)
else if (replace) else if (replace)
{ {
size_t len = strlen (*ep); 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 #ifdef USE_TSEARCH
new_value = alloca (namelen + 1 + vallen); new_value = alloca (namelen + 1 + vallen);
# ifdef _LIBC # ifdef _LIBC
__mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1), __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1),
value, vallen); value, vallen);
# else # else
memcpy (new_value, name, namelen); memcpy (new_value, name, namelen);
new_value[namelen] = '='; new_value[namelen] = '=';
memcpy (&new_value[namelen + 1], value, vallen); memcpy (&new_value[namelen + 1], value, vallen);
# endif # endif
np = KNOWN_VALUE (new_value); np = KNOWN_VALUE (new_value);
if (np == NULL)
#endif
{
np = malloc (namelen + 1 + vallen);
if (np == NULL) if (np == NULL)
#endif
{ {
np = malloc (namelen + 1 + vallen); UNLOCK;
if (np == NULL) return -1;
{
UNLOCK;
return -1;
}
#ifdef USE_TSEARCH
memcpy (np, new_value, namelen + 1 + vallen);
#else
memcpy (np, name, namelen);
np[namelen] = '=';
memcpy (&np[namelen + 1], value, vallen);
#endif
} }
/* Keep the old value around. */ #ifdef USE_TSEARCH
STORE_VALUE (*ep); memcpy (np, new_value, namelen + 1 + vallen);
*ep = np; #else
memcpy (np, name, namelen);
np[namelen] = '=';
memcpy (&np[namelen + 1], value, vallen);
#endif
} }
else
/* Overwrite the value part of the old value. */ /* Keep the old value around. */
memcpy (&(*ep)[namelen + 1], value, vallen); STORE_VALUE (*ep);
*ep = np;
} }
UNLOCK; UNLOCK;