* malloc/arena.c (ptmalloc_init): Don't call next_env_entry if
authorRoland McGrath <roland@gnu.org>
Fri, 27 Dec 2002 00:37:06 +0000 (00:37 +0000)
committerRoland McGrath <roland@gnu.org>
Fri, 27 Dec 2002 00:37:06 +0000 (00:37 +0000)
_environ is NULL.

ChangeLog
malloc/arena.c

index 7f604b4..f24dbc3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-12-27  Jakub Jelinek  <jakub@redhat.com>
+
+       * malloc/arena.c (ptmalloc_init): Don't call next_env_entry if
+       _environ is NULL.
+
 2002-12-27  Andreas Schwab  <schwab@suse.de>
 
        * Makerules ($(common-objpfx)%.make): Filter through
index 4979398..e47d3d0 100644 (file)
@@ -436,49 +436,50 @@ ptmalloc_init __MALLOC_P((void))
 #ifdef _LIBC
   secure = __libc_enable_secure;
   s = NULL;
-  {
-    char **runp = _environ;
-    char *envline;
-
-    while (__builtin_expect ((envline = next_env_entry (&runp)) != NULL,
-                            0))
-      {
-       size_t len = strcspn (envline, "=");
-
-       if (envline[len] != '=')
-         /* This is a "MALLOC_" variable at the end of the string
-            without a '=' character.  Ignore it since otherwise we
-            will access invalid memory below.  */
-         continue;
-
-       switch (len)
-         {
-         case 6:
-           if (memcmp (envline, "CHECK_", 6) == 0)
-             s = &envline[7];
-           break;
-         case 8:
-           if (! secure && memcmp (envline, "TOP_PAD_", 8) == 0)
-             mALLOPt(M_TOP_PAD, atoi(&envline[9]));
-           break;
-         case 9:
-           if (! secure && memcmp (envline, "MMAP_MAX_", 9) == 0)
-             mALLOPt(M_MMAP_MAX, atoi(&envline[10]));
-           break;
-         case 15:
-           if (! secure)
-             {
-               if (memcmp (envline, "TRIM_THRESHOLD_", 15) == 0)
-                 mALLOPt(M_TRIM_THRESHOLD, atoi(&envline[16]));
-               else if (memcmp (envline, "MMAP_THRESHOLD_", 15) == 0)
-                 mALLOPt(M_MMAP_THRESHOLD, atoi(&envline[16]));
-             }
-           break;
-         default:
-           break;
-         }
-      }
-  }
+  if (__builtin_expect (_environ != NULL, 1))
+    {
+      char **runp = _environ;
+      char *envline;
+
+      while (__builtin_expect ((envline = next_env_entry (&runp)) != NULL,
+                              0))
+       {
+         size_t len = strcspn (envline, "=");
+
+         if (envline[len] != '=')
+           /* This is a "MALLOC_" variable at the end of the string
+              without a '=' character.  Ignore it since otherwise we
+              will access invalid memory below.  */
+           continue;
+
+         switch (len)
+           {
+           case 6:
+             if (memcmp (envline, "CHECK_", 6) == 0)
+               s = &envline[7];
+             break;
+           case 8:
+             if (! secure && memcmp (envline, "TOP_PAD_", 8) == 0)
+               mALLOPt(M_TOP_PAD, atoi(&envline[9]));
+             break;
+           case 9:
+             if (! secure && memcmp (envline, "MMAP_MAX_", 9) == 0)
+               mALLOPt(M_MMAP_MAX, atoi(&envline[10]));
+             break;
+           case 15:
+             if (! secure)
+               {
+                 if (memcmp (envline, "TRIM_THRESHOLD_", 15) == 0)
+                   mALLOPt(M_TRIM_THRESHOLD, atoi(&envline[16]));
+                 else if (memcmp (envline, "MMAP_THRESHOLD_", 15) == 0)
+                   mALLOPt(M_MMAP_THRESHOLD, atoi(&envline[16]));
+               }
+             break;
+           default:
+             break;
+           }
+       }
+    }
 #else
   if (! secure)
     {