__getslice__ passed INT_MAX rather than sys.maxint for missingendpoint?

Delaney, Timothy C (Timothy) tdelaney at avaya.com
Mon Mar 28 18:21:06 EST 2005


Dave Huang wrote:

> Hi, I don't actually know Python; I'm just trying to debug a problem
> I encounted in another program, so apologies if this has been
> covered before. I did do some Google searches though, and didn't
> find anything that specifically addressed this :)
> 
> According to the documentation at
> <http://docs.python.org/ref/sequence-methods.html>, __getslice__
> is passed sys.maxint for a missing endpoint (foo[i:]). However, as
> far as I can tell, it's actually passing INT_MAX. I'm running Python
> 2.4 on an Alpha running NetBSD 2.0, an LP64 platform, so the two
> aren't the same. INT_MAX is 2^32-1, whereas sys.maxint is LONG_MAX:
> 2^64-1.
> 
> So, am I misunderstanding things, or is this a doc bug, or a code bug?

It sounds like a code bug to me - raise it at:
http://sourceforge.net/tracker/?group_id=5470&atid=105470

> FWIW, the problem I encountered was some code that did something like:
>     def __getslice__(self, a, b):
>         if b == maxint:
>             b = self.length  # this never got executed, causing

I presume that's actually:

    if b == sys.maxint:

Anyway, the quick fix for this is:

    def __getslice__(self, a, b):
        b = min(b, len(self.length))

Tim Delaney



More information about the Python-list mailing list