Avoid warning from shifting

This commit is contained in:
Ulrich Drepper 2011-11-12 01:31:29 -05:00
parent 5e2b63c658
commit 294ce12680
2 changed files with 9 additions and 2 deletions

View File

@ -1,5 +1,8 @@
2011-11-12 Ulrich Drepper <drepper@gmail.com>
* sysdeps/unix/sysv/linux/internal_statvfs.c (INTERNAL_STATVFS): Use
unsigned long long int to avoid warnings in shift.
* posix/regex_internal.c (re_string_reconstruct): Actually use result
of use of trans.
* posix/regex_internal.h (re_string_wchar_at): Remove temporary

View File

@ -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