Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 21 Apr 2000 16:15:11 +0000 (16:15 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 21 Apr 2000 16:15:11 +0000 (16:15 +0000)
2000-04-21  Ulrich Drepper  <drepper@redhat.com>

* iconv/iconv.c (iconv): Add __builtin_expect where useful.
* iconv/iconv_close.c (iconv_close): Likewise.
* iconv/iconv_open.c (iconv_open): Likewise.

* grp/putgrent.c (putgrent): Unlock steam if fprintf failed.  Add
__builtin_expect where useful.

* grp/initgroups.c (initgroups): Test for result of memory
allocation and punt if it fails.

* dirent/scandir.c (scandir): Add __builtin_expect where useful.
* grp/fgetgrent.c (fgetfrent): Likewise.
* grp/fgetgrent_r.c (__fgetgrent_r): Likewise.

ChangeLog
dirent/scandir.c
grp/fgetgrent.c
grp/fgetgrent_r.c
grp/initgroups.c
grp/putgrent.c
iconv/iconv.c
iconv/iconv_close.c
iconv/iconv_open.c

index 32346c5..ece1f65 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2000-04-21  Ulrich Drepper  <drepper@redhat.com>
+
+       * iconv/iconv.c (iconv): Add __builtin_expect where useful.
+       * iconv/iconv_close.c (iconv_close): Likewise.
+       * iconv/iconv_open.c (iconv_open): Likewise.
+
+       * grp/putgrent.c (putgrent): Unlock steam if fprintf failed.  Add
+       __builtin_expect where useful.
+
+       * grp/initgroups.c (initgroups): Test for result of memory
+       allocation and punt if it fails.
+
+       * dirent/scandir.c (scandir): Add __builtin_expect where useful.
+       * grp/fgetgrent.c (fgetfrent): Likewise.
+       * grp/fgetgrent_r.c (__fgetgrent_r): Likewise.
+
 2000-04-21  Jakub Jelinek  <jakub@redhat.com>
 
        * libio/vasprintf.c: Include string.h to get memcpy prototype.
index ed9071d..9b4548c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
+/* Copyright (C) 1992-1998, 2000 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
@@ -25,8 +25,8 @@ int
 scandir (dir, namelist, select, cmp)
      const char *dir;
      struct dirent ***namelist;
-     int (*select) __P ((const struct dirent *));
-     int (*cmp) __P ((const void *, const void *));
+     int (*select) (const struct dirent *);
+     int (*cmp) (const void *, const void *);
 {
   DIR *dp = __opendir (dir);
   struct dirent **v = NULL;
@@ -50,7 +50,7 @@ scandir (dir, namelist, select, cmp)
        /* Ignore errors from select or readdir */
        __set_errno (0);
 
-       if (i == vsize)
+       if (__builtin_expect (i == vsize, 0))
          {
            struct dirent **new;
            if (vsize == 0)
@@ -71,7 +71,7 @@ scandir (dir, namelist, select, cmp)
        v[i++] = (struct dirent *) memcpy (vnew, d, dsize);
       }
 
-  if (errno != 0)
+  if (__builtin_expect (errno, 0) != 0)
     {
       save = errno;
       (void) __closedir (dp);
index 245524f..69507d9 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996, 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 1997, 1999, 2000 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
@@ -38,7 +38,7 @@ fgetgrent (FILE *stream)
   struct group *result;
   int save;
 
-  if (fgetpos (stream, &pos) != 0)
+  if (__builtin_expect (fgetpos (stream, &pos), 0) != 0)
     return NULL;
 
   /* Get lock.  */
@@ -58,7 +58,7 @@ fgetgrent (FILE *stream)
       char *new_buf;
       buffer_size += NSS_BUFLEN_GROUP;
       new_buf = realloc (buffer, buffer_size);
-      if (new_buf == NULL)
+      if (__builtin_expect (new_buf == NULL, 0))
        {
          /* We are out of memory.  Free the current buffer so that the
             process gets a chance for a normal termination.  */
index 0b1d782..058b0b3 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996-1999, 2000 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
@@ -70,14 +70,14 @@ __fgetgrent_r (FILE *stream, struct group *resbuf, char *buffer, size_t buflen,
     {
       buffer[buflen - 1] = '\xff';
       p = fgets_unlocked (buffer, buflen, stream);
-      if (p == NULL && feof_unlocked (stream))
+      if (__builtin_expect (p == NULL, 0) && feof_unlocked (stream))
        {
          funlockfile (stream);
          *result = NULL;
          __set_errno (ENOENT);
          return errno;
        }
-      if (p == NULL || buffer[buflen - 1] != '\xff')
+      if (__builtin_expect (p == NULL, 0) || buffer[buflen - 1] != '\xff')
        {
          funlockfile (stream);
          *result = NULL;
@@ -97,7 +97,7 @@ __fgetgrent_r (FILE *stream, struct group *resbuf, char *buffer, size_t buflen,
 
   funlockfile (stream);
 
-  if (parse_result == -1)
+  if (__builtin_expect (parse_result, 0) == -1)
     {
       /* The parser ran out of space.  */
       *result = NULL;
index fd30ebf..06c48bb 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989, 91, 93, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1989, 91, 93, 1996-1999, 2000 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
@@ -163,7 +163,10 @@ initgroups (user, group)
     size = 16;
 #endif
 
-  groups = malloc (size * sizeof (gid_t *));
+  groups = (gid_t *) malloc (size * sizeof (gid_t));
+  if (__builtin_expect (groups == NULL, 0))
+    /* No more memory.  */
+    return -1;
 
   groups[0] = group;
 
index a119ebe..11b64ec 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1996, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 96, 98, 99, 2000 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
@@ -36,7 +36,7 @@ putgrent (gr, stream)
 {
   int retval;
 
-  if (gr == NULL || stream == NULL)
+  if (__builtin_expect (gr == NULL, 0) || __builtin_expect (stream == NULL, 0))
     {
       __set_errno (EINVAL);
       return -1;
@@ -46,8 +46,11 @@ putgrent (gr, stream)
 
   retval = fprintf (stream, "%s:%s:%u:",
                    gr->gr_name, _S (gr->gr_passwd), gr->gr_gid);
-  if (retval < 0)
-    return -1;
+  if (__builtin_expect (retval, 0) < 0)
+    {
+      funlockfile (stream);
+      return -1;
+    }
 
   if (gr->gr_mem != NULL)
     {
index c1b9616..c7ff73c 100644 (file)
@@ -1,6 +1,6 @@
 /* Convert characters in input buffer using conversion descriptor to
    output buffer.
-   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -37,7 +37,7 @@ iconv (iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf,
   size_t converted;
   int result;
 
-  if (inbuf == NULL || *inbuf == NULL)
+  if (__gconv_builtin (inbuf == NULL || *inbuf == NULL), 0)
     {
       if (outbuf == NULL || *outbuf == NULL)
        result = __gconv (gcd, NULL, NULL, NULL, NULL, &converted);
@@ -61,7 +61,7 @@ iconv (iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf,
   if (outstart != NULL)
     *outbytesleft -= *outbuf - outstart;
 
-  switch (result)
+  switch (__builtin_expect (result, __GCONV_OK))
     {
     case __GCONV_ILLEGAL_DESCRIPTOR:
       __set_errno (EBADF);
index 6f81aa2..c999e44 100644 (file)
@@ -1,5 +1,5 @@
 /* Release any resource associated with given conversion descriptor.
-   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -27,7 +27,7 @@
 int
 iconv_close (iconv_t cd)
 {
-  if (cd == (iconv_t *) -1L)
+  if (__builtin_expect (cd == (iconv_t *) -1L, 0))
     {
       __set_errno (EBADF);
       return -1;
index 96b910e..7f06947 100644 (file)
@@ -1,5 +1,5 @@
 /* Get descriptor for character set conversion.
-   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -87,7 +87,7 @@ iconv_open (const char *tocode, const char *fromcode)
 
   res = __gconv_open (tocode, fromcode, &cd, 0);
 
-  if (res != __GCONV_OK)
+  if (__builtin_expect (res, __GCONV_OK) != __GCONV_OK)
     {
       /* We must set the error number according to the specs.  */
       if (res == __GCONV_NOCONV || res == __GCONV_NODB)