1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-12-24 17:51:17 +03:00
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

@@ -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);
np = KNOWN_VALUE (new_value);
if (np == NULL)
#endif
{
np = malloc (namelen + 1 + vallen);
if (np == NULL)
#endif
{
np = malloc (namelen + 1 + vallen);
if (np == NULL)
{
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
UNLOCK;
return -1;
}
/* Keep the old value around. */
STORE_VALUE (*ep);
*ep = np;
#ifdef USE_TSEARCH
memcpy (np, new_value, namelen + 1 + vallen);
#else
memcpy (np, name, namelen);
np[namelen] = '=';
memcpy (&np[namelen + 1], value, vallen);
#endif
}
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;