[Python-Dev] gcc 4.2 exposes signed integer overflows (original) (raw)
Tim Peters tim.peters at gmail.com
Sun Aug 27 02:37:46 CEST 2006
- Previous message: [Python-Dev] gcc 4.2 exposes signed integer overflows
- Next message: [Python-Dev] gcc 4.2 exposes signed integer overflows
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[David Hopwood]
CPython should be fixed anyway. The correct fix is "if (y == -1 && x < 0 && (unsigned long)x == -(unsigned long)x)".
Note that this was already suggested in the bug report.
[Thomas Wouters]
Why not just "... && x == LONGMIN"?
In full,
if (y == -1 && x == LONG_MIN)
"should work" too. In practice we try to avoid numeric symbols from
platform header files because so many platforms have screwed these up
over the centuries (search for LONG_BIT or HUGE_VAL ;-)), and because
it's better (when possible) not to tie the code to that x
was
specifically declared as type "long" (e.g., just more stuff that will
break if Python decides to make its short int of type PY_LONG_LONG
instead). In this specific case, there may also have been a desire to
avoid generating a memory load for a fat constant. However, since
this is integer division, in real life (outside the test suite) we'll
never go beyond the "y == -1" test.
- Previous message: [Python-Dev] gcc 4.2 exposes signed integer overflows
- Next message: [Python-Dev] gcc 4.2 exposes signed integer overflows
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]