aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/i386/getuid.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/getuid.c')
-rw-r--r--sysdeps/unix/sysv/linux/i386/getuid.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/getuid.c b/sysdeps/unix/sysv/linux/i386/getuid.c
index d160e4423a..97fd273805 100644
--- a/sysdeps/unix/sysv/linux/i386/getuid.c
+++ b/sysdeps/unix/sysv/linux/i386/getuid.c
@@ -30,8 +30,11 @@ extern int __syscall_getuid (void);
extern int __syscall_getuid32 (void);
# if __ASSUME_32BITUIDS == 0
/* This variable is shared with all files that need to check for 32bit
- uids. This is the definition */
-int __libc_missing_32bit_uids;
+ uids. This is the definition.
+ -1 if libc does not know yet whether kernel has 32bit uids or not.
+ 0 if it does have them.
+ 1 if it does not have them. */
+int __libc_missing_32bit_uids = -1;
# endif
#endif /* __NR_getuid32 */
@@ -42,7 +45,7 @@ __getuid (void)
return INLINE_SYSCALL (getuid32, 0);
#else
# ifdef __NR_getuid32
- if (!__libc_missing_32bit_uids)
+ if (__libc_missing_32bit_uids <= 0)
{
int result;
int saved_errno = errno;