diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-11-12 01:31:29 -0500 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-11-12 01:31:29 -0500 |
commit | 294ce12680bfa52aa7f9f1cb93b2bb5b2d22eaae (patch) | |
tree | ca78fbdef3367395809838ef363e85f40922b77e /sysdeps/unix | |
parent | 5e2b63c65892e054980570957f533312cfd223c2 (diff) | |
download | glibc-294ce12680bfa52aa7f9f1cb93b2bb5b2d22eaae.zip glibc-294ce12680bfa52aa7f9f1cb93b2bb5b2d22eaae.tar.gz glibc-294ce12680bfa52aa7f9f1cb93b2bb5b2d22eaae.tar.bz2 |
Avoid warning from shifting
Diffstat (limited to 'sysdeps/unix')
-rw-r--r-- | sysdeps/unix/sysv/linux/internal_statvfs.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.c b/sysdeps/unix/sysv/linux/internal_statvfs.c index 2ddec1e..a0bad02 100644 --- a/sysdeps/unix/sysv/linux/internal_statvfs.c +++ b/sysdeps/unix/sysv/linux/internal_statvfs.c @@ -237,9 +237,13 @@ INTERNAL_STATVFS (const char *name, struct STATVFS *buf, buf->f_files = fsbuf->f_files; buf->f_ffree = fsbuf->f_ffree; if (sizeof (buf->f_fsid) == sizeof (fsbuf->f_fsid)) + /* The shifting uses 'unsigned long long int' even though the target + field might only have 32 bits. This is OK since the 'if' branch + is not used in this case but the compiler would still generate + warnings. */ buf->f_fsid = ((fsbuf->f_fsid.__val[0] - & ((1UL << (8 * sizeof (fsbuf->f_fsid.__val[0]))) - 1)) - | ((unsigned long int) fsbuf->f_fsid.__val[1] + & ((1ULL << (8 * sizeof (fsbuf->f_fsid.__val[0]))) - 1)) + | ((unsigned long long int) fsbuf->f_fsid.__val[1] << (8 * (sizeof (buf->f_fsid) - sizeof (fsbuf->f_fsid.__val[0]))))); else |