[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#8545: issues with recent doprnt-related changes
From: |
Jason Rumney |
Subject: |
bug#8545: issues with recent doprnt-related changes |
Date: |
Sun, 01 May 2011 12:25:45 +0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
Paul Eggert <eggert@cs.ucla.edu> writes:
> On 04/29/11 05:28, Richard Stallman wrote:
>
>> We are concerned with standards insofar as they matter in practice
>> for the convenience and reliability of our software.
>
> Yes, of course, I should have made that clearer. Standards are our
> tools, not our masters.
>
>>> If you assign i = INT_MAX + 1, the resulting behavior is undefined.
>>
>> The result is INT_MIN. We don't try to support any theoretical machine
>> where this would not be so.
>
> long
> foo (char *p, int i)
> {
> return &p[i + 1] - &p[i];
> }
>
> On typical hosts where int is 32 bits, and long and char * are
> both 64 bits, most compilers optimize that "return" statement
> to "return 1;", even when I is INT_MAX and I + 1 therefore
> overflows.
That does not mean that INT_MAX + 1 is undefined. You are also
involving implicit casts here. Exactly where those casts happen is what
is undefined.
- bug#8545: issues with recent doprnt-related changes,
Jason Rumney <=
bug#8545: issues with recent doprnt-related changes, Paul Eggert, 2011/05/04