diff options
author | Ulrich Drepper <drepper@redhat.com> | 2008-12-02 01:40:59 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2008-12-02 01:40:59 +0000 |
commit | 1fa7ae05b99220ac4590781fdf9fad437900275a (patch) | |
tree | 21149fb84ba1f324d4d4c9624f3c69d46492012e /stdlib/setenv.c | |
parent | 37a6a271bf72e247047f1e4e9cf457e895d57dce (diff) | |
download | glibc-1fa7ae05b99220ac4590781fdf9fad437900275a.zip glibc-1fa7ae05b99220ac4590781fdf9fad437900275a.tar.gz glibc-1fa7ae05b99220ac4590781fdf9fad437900275a.tar.bz2 |
* stdlib/setenv.c (unsetenv): Don't search environment if it does
not exist.
Diffstat (limited to 'stdlib/setenv.c')
-rw-r--r-- | stdlib/setenv.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/stdlib/setenv.c b/stdlib/setenv.c index 48aaecf..fe591b7 100644 --- a/stdlib/setenv.c +++ b/stdlib/setenv.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992,1995-2001,2004 Free Software Foundation, Inc. +/* Copyright (C) 1992,1995-2001,2004, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -292,19 +292,20 @@ unsetenv (name) LOCK; ep = __environ; - while (*ep != NULL) - if (!strncmp (*ep, name, len) && (*ep)[len] == '=') - { - /* Found it. Remove this pointer by moving later ones back. */ - char **dp = ep; - - do - dp[0] = dp[1]; - while (*dp++); - /* Continue the loop in case NAME appears again. */ - } - else - ++ep; + if (ep != NULL) + while (*ep != NULL) + if (!strncmp (*ep, name, len) && (*ep)[len] == '=') + { + /* Found it. Remove this pointer by moving later ones back. */ + char **dp = ep; + + do + dp[0] = dp[1]; + while (*dp++); + /* Continue the loop in case NAME appears again. */ + } + else + ++ep; UNLOCK; |