Fix posix_fadvise on powerpc32
Andreas Jaeger
aj@suse.de
Mon Aug 25 18:43:00 GMT 2003
Ulrich Drepper <drepper@redhat.com> writes:
> Andreas Jaeger wrote:
>
>> ============================================================
>> Index: sysdeps/unix/sysv/linux/posix_fadvise64.c
>> --- sysdeps/unix/sysv/linux/posix_fadvise64.c 17 Aug 2003 00:36:42 -0000 1.1
>> +++ sysdeps/unix/sysv/linux/posix_fadvise64.c 25 Aug 2003 08:19:40 -0000
>> @@ -33,8 +33,8 @@ __posix_fadvise64_l64 (int fd, off64_t o
>> #ifdef __NR_fadvise64_64
>> INTERNAL_SYSCALL_DECL (err);
>> int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,
>> - __LONG_LONG_PAIR (offset >> 32, offset),
>> - __LONG_LONG_PAIR (len >> 32, len),
>> + __LONG_LONG_PAIR ((long)offset >> 32, (long)offset),
>> + __LONG_LONG_PAIR ((long)len >> 32, (long)len),
>> advise);
>> if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
>> return 0;
>> @@ -50,7 +50,7 @@ __posix_fadvise64_l64 (int fd, off64_t o
>>
>> INTERNAL_SYSCALL_DECL (err2);
>> int ret2 = INTERNAL_SYSCALL (fadvise64, err2, 5, fd,
>> - __LONG_LONG_PAIR (offset >> 32, offset),
>> + __LONG_LONG_PAIR ((long)offset >> 32, (long)offset),
>
> This code isn't correct either. The cast has a higher precedence than
> the shift. You'll always get zeor as the result.
Argh. Thanks for noticing. So, would (long)(offset >> 32) be ok?
Andreas
--
Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-hacker/attachments/20030825/b1671f57/attachment.sig>
More information about the Libc-hacker
mailing list