This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.19-19-gf3d338c
- From: neleai at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 10 Feb 2014 12:58:10 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.19-19-gf3d338c
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via f3d338c9f3e84dac5458d388efd785c4ef0df7ec (commit)
from bdfe308a166b433a841d5c9ae256560c18bce640 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=f3d338c9f3e84dac5458d388efd785c4ef0df7ec
commit f3d338c9f3e84dac5458d388efd785c4ef0df7ec
Author: OndÅ?ej BÃlka <neleai@seznam.cz>
Date: Mon Feb 10 12:50:46 2014 +0100
Deduplicate setenv.
Setenv contained a code path that was redundant as it could be handled
in general case.
diff --git a/ChangeLog b/ChangeLog
index bded2c3..cf1b17d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2014-02-10 OndÅ?ej BÃlka <neleai@seznam.cz>
+ [BZ #15894]
+ * stdlib/setenv.c (__add_to_environ): Remove duplicate code.
+
+2014-02-10 OndÅ?ej BÃlka <neleai@seznam.cz>
+
* malloc/arena.c (grow_heap, get_free_list, reused_arena,
arena_get2): Remove THREAD_STATS conditionals.
* malloc/malloc.c (__malloc_assert, __libc_realloc, _int_free,
diff --git a/NEWS b/NEWS
index 851167f..0f4b8d4 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,8 @@ Version 2.20
* The following bugs are resolved with this release:
+ 15894.
+
* The am33 port, which had not worked for several years, has been removed
from ports.
diff --git a/stdlib/setenv.c b/stdlib/setenv.c
index 7df5b3f..3043498 100644
--- a/stdlib/setenv.c
+++ b/stdlib/setenv.c
@@ -146,82 +146,13 @@ __add_to_environ (name, value, combined, replace)
UNLOCK;
return -1;
}
-
- /* If the whole entry is given add it. */
- if (combined != NULL)
- /* We must not add the string to the search tree since it belongs
- to the user. */
- new_environ[size] = (char *) combined;
- else
- {
- /* See whether the value is already known. */
-#ifdef USE_TSEARCH
- char *new_value;
- int use_alloca = __libc_use_alloca (varlen);
- if (__builtin_expect (use_alloca, 1))
- new_value = (char *) alloca (varlen);
- else
- {
- new_value = malloc (varlen);
- if (new_value == NULL)
- {
- UNLOCK;
- if (last_environ == NULL)
- free (new_environ);
- return -1;
- }
- }
-# ifdef _LIBC
- __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);
-# endif
-
- new_environ[size] = KNOWN_VALUE (new_value);
- if (__builtin_expect (new_environ[size] == NULL, 1))
-#endif
- {
-#ifdef USE_TSEARCH
- if (__builtin_expect (! use_alloca, 0))
- new_environ[size] = new_value;
- else
-#endif
- {
- new_environ[size] = (char *) malloc (varlen);
- if (__builtin_expect (new_environ[size] == NULL, 0))
- {
- UNLOCK;
- return -1;
- }
-
-#ifdef USE_TSEARCH
- memcpy (new_environ[size], new_value, varlen);
-#else
- memcpy (new_environ[size], name, namelen);
- new_environ[size][namelen] = '=';
- memcpy (&new_environ[size][namelen + 1], value, vallen);
-#endif
- }
-
- /* And save the value now. We cannot do this when we remove
- the string since then we cannot decide whether it is a
- user string or not. */
- STORE_VALUE (new_environ[size]);
- }
- }
-
- if (__environ != last_environ)
- memcpy ((char *) new_environ, (char *) __environ,
- size * sizeof (char *));
-
+ new_environ[size] = NULL;
new_environ[size + 1] = NULL;
+ ep = new_environ + size;
last_environ = __environ = new_environ;
}
- else if (replace)
+ if (*ep == NULL || replace)
{
char *np;
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 5 +++
NEWS | 2 +
stdlib/setenv.c | 75 ++----------------------------------------------------
3 files changed, 10 insertions(+), 72 deletions(-)
hooks/post-receive
--
GNU C Library master sources