diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-07-25 18:02:26 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-07-25 18:02:26 +0000 |
commit | 6730873037b6afad1504bb237399c343cce18451 (patch) | |
tree | cb31093b70d4dfbf5f1c77482720bf871261b8c5 | |
parent | 264d5b944dca563c8b948392942d1ea33d221723 (diff) | |
download | glibc-6730873037b6afad1504bb237399c343cce18451.tar glibc-6730873037b6afad1504bb237399c343cce18451.tar.gz glibc-6730873037b6afad1504bb237399c343cce18451.tar.bz2 glibc-6730873037b6afad1504bb237399c343cce18451.zip |
Update.
1998-07-25 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/i386/bits/byteswap.h (__bswap_64): Change __v to __w to
prevent conflict with __bswap_32.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | nscd/connections.c | 8 | ||||
-rw-r--r-- | nscd/nscd_getgr_r.c | 13 | ||||
-rw-r--r-- | sysdeps/i386/bits/byteswap.h | 8 |
4 files changed, 29 insertions, 5 deletions
@@ -1,3 +1,8 @@ +1998-07-25 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/i386/bits/byteswap.h (__bswap_64): Change __v to __w to + prevent conflict with __bswap_32. + 1998-07-24 21:29 Ulrich Drepper <drepper@cygnus.com> * nscd/connections.c (pw_send_answer): Make one single writev call. diff --git a/nscd/connections.c b/nscd/connections.c index e11132c514..582a6cf8f0 100644 --- a/nscd/connections.c +++ b/nscd/connections.c @@ -502,6 +502,14 @@ gr_send_answer (int conn, struct group *grp) } /* Send all the data. */ + while (nblocks > UIO_MAXIOV) + { + if (writev (sock[conn], vec, UIO_MAXIOV) != total_len) + dbg_log (_("write incomplete on send group answer: %s"), + strerror (errno)); + vec += UIO_MAXIOV; + nblocks -= UIO_MAXIOV; + } if (writev (sock[conn], vec, nblocks) != total_len) dbg_log (_("write incomplete on send group answer: %s"), strerror (errno)); diff --git a/nscd/nscd_getgr_r.c b/nscd/nscd_getgr_r.c index 9b3022c764..85ebb0dc60 100644 --- a/nscd/nscd_getgr_r.c +++ b/nscd/nscd_getgr_r.c @@ -232,7 +232,18 @@ __nscd_getgr_r (const char *key, request_type type, struct group *resultbuf, *p++ = '\0'; } - if (__readv (sock, vec, gr_resp.gr_mem_len) != total_len) + while (i > UIO_MAXIOV) + { + if (__readv (sock, vec, UIO_MAXIOV) != total_len) + { + __close (sock); + return -1; + } + vec += UIO_MAXIOV; + i -= UIO_MAXIOV; + } + + if (__readv (sock, vec, i) != total_len) { __close (sock); return -1; diff --git a/sysdeps/i386/bits/byteswap.h b/sysdeps/i386/bits/byteswap.h index 1eef351a0c..760e0751c9 100644 --- a/sysdeps/i386/bits/byteswap.h +++ b/sysdeps/i386/bits/byteswap.h @@ -83,9 +83,9 @@ /* Swap bytes in 64 bit value. */ # define __bswap_64(x) \ ({ union { unsigned long long int __ll; \ - unsigned long int __l[2]; } __v, __r; \ - __v.__ll = (x); \ - __r.__l[0] = __bswap_32 (__v.__l[1]); \ - __r.__l[1] = __bswap_32 (__v.__l[0]); \ + unsigned long int __l[2]; } __w, __r; \ + __w.__ll = (x); \ + __r.__l[0] = __bswap_32 (__w.__l[1]); \ + __r.__l[1] = __bswap_32 (__w.__l[0]); \ __r.__ll; }) #endif |