diff options
author | Walter Dörwald <walter@livinglogic.de> | 2003-06-17 19:27:39 (GMT) |
---|---|---|
committer | Walter Dörwald <walter@livinglogic.de> | 2003-06-17 19:27:39 (GMT) |
commit | e8049befdfa75501762f7b8afdf06335a2f6acba (patch) | |
tree | 4fe9873b63f2f55e6e5a18ea11341509fd8bc533 | |
parent | 8e9b80fd561e68574ee313f32d3fd6cde59d7723 (diff) | |
download | cpython-e8049befdfa75501762f7b8afdf06335a2f6acba.zip cpython-e8049befdfa75501762f7b8afdf06335a2f6acba.tar.gz cpython-e8049befdfa75501762f7b8afdf06335a2f6acba.tar.bz2 |
Use _PyEval_SliceIndex to handle list.index() calls with
huge start and stop arguments. Add tests.
-rw-r--r-- | Lib/test/test_types.py | 9 | ||||
-rw-r--r-- | Objects/listobject.c | 4 |
2 files changed, 12 insertions, 1 deletions
diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index 61f660b..f39c51a 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -374,6 +374,15 @@ if a.index(0,3) != 3: raise TestFailed, 'list index, start argument' if a.index(0,-3) != 3: raise TestFailed, 'list index, -start argument' if a.index(0,3,4) != 3: raise TestFailed, 'list index, stop argument' if a.index(0,-3,-2) != 3: raise TestFailed, 'list index, -stop argument' +if a.index(0,-4*sys.maxint,4*sys.maxint) != 2: + raise TestFailed, 'list index, -maxint, maxint argument' +try: + a.index(0, 4*sys.maxint,-4*sys.maxint) +except ValueError: + pass +else: + raise TestFailed, 'list index, maxint,-maxint argument' + try: a.index(2,0,-10) except ValueError: diff --git a/Objects/listobject.c b/Objects/listobject.c index a70ac5f..b059420 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -1832,7 +1832,9 @@ listindex(PyListObject *self, PyObject *args) int i, start=0, stop=self->ob_size; PyObject *v; - if (!PyArg_ParseTuple(args, "O|ii:index", &v, &start, &stop)) + if (!PyArg_ParseTuple(args, "O|O&O&:index", &v, + _PyEval_SliceIndex, &start, + _PyEval_SliceIndex, &stop)) return NULL; if (start < 0) { start += self->ob_size; |