diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/fxstatat.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/fxstatat.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/fxstatat.c b/sysdeps/unix/sysv/linux/i386/fxstatat.c index 2fc89e69c4..d5bc6021bc 100644 --- a/sysdeps/unix/sysv/linux/i386/fxstatat.c +++ b/sysdeps/unix/sysv/linux/i386/fxstatat.c @@ -24,6 +24,7 @@ #include <fcntl.h> #include <stddef.h> #include <stdio.h> +#include <string.h> #include <sys/stat.h> #include <kernel_stat.h> @@ -47,7 +48,7 @@ extern int __have_no_stat64; int __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) { - if (flag & ~AT_SYMLINK_NOFOLLOW) + if (__builtin_expect (flag & ~AT_SYMLINK_NOFOLLOW, 0)) { __set_errno (EINVAL); return -1; @@ -138,7 +139,10 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) out: if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0)) - __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, buf); + { + __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, buf); + result = -1; + } return result; } |