• Guido van Rossum's avatar
    Subject: Buglet in PyLong_AsLong · f7531812
    Guido van Rossum yazdı
    From: "Tim Peters" <tim_one@email.msn.com>
    To: "Guido van Rossum" <guido@CNRI.Reston.VA.US>
    Date: Sat, 23 May 1998 21:45:53 -0400
    
    Guido, the overflow checking in PyLong_AsLong is off a little:
    
    1) If the C in use sign-extends right shifts on signed longs, there's a
    spurious overflow error when converting the most-negative int:
    
    Python 1.5.1 (#0, Apr 13 1998, 20:22:04) [MSC 32 bit (Intel)] on win32
    Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
    >>> x = -1L << 31
    >>> x
    -2147483648L
    >>> int(x)
    Traceback (innermost last):
      File "<stdin>", line 1, in ?
    OverflowError: long int too long to convert
    >
    > 2) If C does not sign-extend, some genuine overflows won't be caught.
    >
    > The attached should repair both, and, because I installed a new disk and a C
    > compiler today, it's even been compiled this time <wink>.
    >
    > Python 1.5.1 (#0, May 23 1998, 20:24:58) [MSC 32 bit (Intel)] on win32
    > Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
    > >>> x = -1L << 31
    > >>> x
    > -2147483648L
    > >>> int(x)
    > -2147483648
    > >>> int(-x)
    > Traceback (innermost last):
    >   File "<stdin>", line 1, in ?
    > OverflowError: long int too long to convert
    > >>> int(-x-1)
    > 2147483647
    > >>> int(x-1)
    > Traceback (innermost last):
    >   File "<stdin>", line 1, in ?
    > OverflowError: long int too long to convert
    
    end-casing-ly y'rs  - tim
    f7531812
Adı
Son kayıt (commit)
Son güncelleme
..
Makefile.in Loading commit data...
abstract.c Loading commit data...
classobject.c Loading commit data...
cobject.c Loading commit data...
complexobject.c Loading commit data...
dictobject.c Loading commit data...
fileobject.c Loading commit data...
floatobject.c Loading commit data...
frameobject.c Loading commit data...
funcobject.c Loading commit data...
intobject.c Loading commit data...
listobject.c Loading commit data...
longobject.c Loading commit data...
methodobject.c Loading commit data...
moduleobject.c Loading commit data...
object.c Loading commit data...
rangeobject.c Loading commit data...
sliceobject.c Loading commit data...
stringobject.c Loading commit data...
tupleobject.c Loading commit data...
typeobject.c Loading commit data...
xxobject.c Loading commit data...