1 message in org.python.python-bugs-list[ python-Bugs-908441 ] default index ...
FromSent OnAttachments
SourceForge.netMar 2, 2004 12:40 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[ python-Bugs-908441 ] default index for __getslice__ is not sys.maxintActions...
From:SourceForge.net (nore@sourceforge.net)
Date:Mar 2, 2004 12:40:55 pm
List:org.python.python-bugs-list

Bugs item #908441, was opened at 2004-03-02 17:41 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=908441&group_id=5470

Category: Python Interpreter Core Group: Python 2.3 Status: Open Resolution: None Priority: 5 Submitted By: Matthias Drochner (drochner) Assigned to: Nobody/Anonymous (nobody) Summary: default index for __getslice__ is not sys.maxint

Initial Comment: (This applies also to __setslice__ and possibly more.) (This was already present in Python-2.2.)

If the upper slice index is omitted, a default is passed to the __getslice__ method. Documentation claims this is sys.maxint. This is wrong if INT_MAX and LONG_MAX differ; what is passed is INT_MAX while sys.maxint is LONG_MAX.

I'm not sure whether to call it a code bug or a documentation bug; at least there is code out there which compares to sys.maxint.

The whole code path from ceval.c:_PyEval_SliceIndex() to operator.c:op_getslice() to abstract.c:PySequence_GetSlice() to classobject.c:instance_slice() has just room for an "int", so a code fix is pretty invasive...

A small test program to check this: ========== import sys

class sl(object): def __getslice__(self, a, b): return (a, b)

print "sys.maxint = %ld" % sys.maxint bounds = sl()[:] print "default bounds = [%ld, %ld]" % bounds ========== gives on NetBSD/amd64: sys.maxint = 9223372036854775807 default bounds = [0, 2147483647]

----------------------------------------------------------------------