summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/times.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/times.c')
-rw-r--r--sysdeps/unix/sysv/linux/times.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/times.c b/sysdeps/unix/sysv/linux/times.c
index 2759683b0b..42d265dc87 100644
--- a/sysdeps/unix/sysv/linux/times.c
+++ b/sysdeps/unix/sysv/linux/times.c
@@ -27,7 +27,7 @@ __times (struct tms *buf)
INTERNAL_SYSCALL_DECL (err);
clock_t ret = INTERNAL_SYSCALL (times, err, 1, buf);
if (INTERNAL_SYSCALL_ERROR_P (ret, err)
- && __builtin_expect (INTERNAL_SYSCALL_ERRNO (ret, err) == -EFAULT, 0))
+ && __builtin_expect (INTERNAL_SYSCALL_ERRNO (ret, err) == EFAULT, 0))
{
/* This might be an error or not. For architectures which have
no separate return value and error indicators we cannot
@@ -49,6 +49,11 @@ __times (struct tms *buf)
return an EFAULT error. Return the value given by the kernel. */
}
+ /* Return value (clock_t) -1 signals an error, but if there wasn't any,
+ return the following value. */
+ if (ret == (clock_t) -1)
+ return (clock_t) 0;
+
return ret;
}
weak_alias (__times, times)