* stdlib/setenv.c (unsetenv): Don't search environment if it does
authorUlrich Drepper <drepper@redhat.com>
Tue, 2 Dec 2008 01:40:59 +0000 (01:40 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 2 Dec 2008 01:40:59 +0000 (01:40 +0000)
not exist.

ChangeLog
stdlib/setenv.c

index 0aa3a57..8c593a1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-12-01  Ulrich Drepper  <drepper@redhat.com>
+
+       * stdlib/setenv.c (unsetenv): Don't search environment if it does
+       not exist.
+
 2008-11-29  Ulrich Drepper  <drepper@redhat.com>
 
        * login/utmp_file.c (file_writable): New variable.
index 48aaecf..fe591b7 100644 (file)
@@ -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;