diff options
author | Ulrich Drepper <drepper@redhat.com> | 2005-03-19 00:28:51 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2005-03-19 00:28:51 +0000 |
commit | 88764ae26aac9baada43ffd514d446312b5f3d0c (patch) | |
tree | a44af443d9a166601e0119f9d0bb445ae8b13a50 /socket/bits | |
parent | 60bd9f7c4114b405579263b160e53ed606db7291 (diff) | |
download | glibc-88764ae26aac9baada43ffd514d446312b5f3d0c.tar.gz |
[BZ #779]
2005-03-10 Jakub Jelinek <jakub@redhat.com>
* math/test-misc.c (main): Add some more tests.
2005-03-17 Jakub Jelinek <jakub@redhat.com>
* posix/regcomp.c (re_compile_fastmap_iter): Fix check for failed
__wcrtomb. Check return values of other __wcrtomb calls.
* posix/regex_internal.c (build_wcs_buffer, re_string_skip_chars):
Change mbclen type to size_t.
(build_wcs_upper_buffer): Change mbclen and mbcdlen type to size_t.
Handle mb chars whose upper case doesn't have multibyte representation
in locale's charset.
2005-03-15 Jakub Jelinek <jakub@redhat.com>
* malloc/malloc.c (_int_icalloc, _int_icomalloc, iALLOc,
public_iCALLOc, public_iCALLOc, public_iCOMALLOc): Protect with
#ifndef _LIBC.
[BZ #779]
* malloc/malloc.c (public_mTRIm): Initialize malloc if not yet
initialized.
2005-03-10 Jakub Jelinek <jakub@redhat.com>
* misc/sys/cdefs.h (__always_inline): Define.
* posix/bits/unistd.h (read, pread, pread64, readlink, getcwd, getwd):
Use __always_inline instead of __inline.
* socket/bits/socket2.h (recv, recvfrom): Likewise.
* libio/bits/stdio2.h (gets, fgets, fgets_unlocked): Likewise.
* string/bits/string3.h (__memcpy_ichk, __memmove_ichk, __mempcpy_ichk,
__memset_ichk, __strcpy_ichk, __stpcpy_ichk, __strncpy_ichk,
__strcat_ichk, __strncat_ichk): Use __always_inline instead of
__inline__ __attribute__ ((__always_inline__)).
2005-03-09 Jakub Jelinek <jakub@redhat.com>
* debug/tst-chk1.c: Include sys/socket.h and sys/un.h.
(do_test): Add new tests for recv, recvfrom, getcwd, getwd and
readlink. Add some more tests for read, pread, pread64, fgets and
fgets_unlocked.
* posix/bits/unistd.h (read, pread, pread64, readlink,
getcwd, getwd): Change macros into extern inline functions.
(__read_alias, __pread_alias, __pread64_alias, __readlink_alias,
__getcwd_alias, __getwd_alias): New prototypes.
* socket/bits/socket2.h (recv, recvfrom): Change macros into
extern inline functions.
(__recv_alias, __recvfrom_alias): New prototypes.
* libio/bits/stdio2.h (gets, fgets, fgets_unlocked): Change macros
into extern inline functions.
(__gets_alias, __fgets_alias, __fgets_unlocked_alias): New prototypes.
* debug/pread_chk.c (__pread_chk): Fix order of arguments passed
to __pread.
* debug/pread64_chk.c (__pread64_chk): Fix order of arguments passed
to __pread64.
Diffstat (limited to 'socket/bits')
-rw-r--r-- | socket/bits/socket2.h | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/socket/bits/socket2.h b/socket/bits/socket2.h index e752879e6e..a88c1545dd 100644 --- a/socket/bits/socket2.h +++ b/socket/bits/socket2.h @@ -23,18 +23,34 @@ extern ssize_t __recv_chk (int __fd, void *__buf, size_t __n, size_t __buflen, int __flags); -#define recv(fd, buf, n, flags) \ - (__bos0 (buf) != (size_t) -1 \ - && (!__builtin_constant_p (n) || (n) > __bos0 (buf)) \ - ? __recv_chk (fd, buf, n, __bos0 (buf), flags) \ - : recv (fd, buf, n, flags)) +extern ssize_t __REDIRECT (__recv_alias, (int __fd, void *__buf, size_t __n, + int __flags), recv); + +extern __always_inline ssize_t +recv (int __fd, void *__buf, size_t __n, int __flags) +{ + if (__bos0 (__buf) != (size_t) -1 + && (!__builtin_constant_p (__n) || __n > __bos0 (__buf))) + return __recv_chk (__fd, __buf, __n, __bos0 (__buf), __flags); + return __recv_alias (__fd, __buf, __n, __flags); +} extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n, size_t __buflen, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len); -#define recvfrom(fd, buf, n, flags, addr, addr_len) \ - (__bos0 (buf) != (size_t) -1 \ - && (!__builtin_constant_p (n) || (n) > __bos0 (buf)) \ - ? __recvfrom_chk (fd, buf, n, __bos0 (buf), flags, addr, addr_len) \ - : recvfrom (fd, buf, n, flags, addr, addr_len)) +extern ssize_t __REDIRECT (__recvfrom_alias, + (int __fd, void *__restrict __buf, size_t __n, + int __flags, __SOCKADDR_ARG __addr, + socklen_t *__restrict __addr_len), recvfrom); + +extern __always_inline ssize_t +recvfrom (int __fd, void *__buf, size_t __n, int __flags, + __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) +{ + if (__bos0 (__buf) != (size_t) -1 + && (!__builtin_constant_p (__n) || __n > __bos0 (__buf))) + return __recvfrom_chk (__fd, __buf, __n, __bos0 (__buf), __flags, + __addr, __addr_len); + return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len); +} |