[Python-Dev] Re: [snake-farm] test test_slice failed -- [9, 7, 5,
3, 1] == [0]
Neal Norwitz
neal@metaslash.com
Wed, 06 Nov 2002 08:32:45 -0500
On Wed, Nov 06, 2002 at 11:04:57AM +0000, Michael Hudson wrote:
>
> So you suggest changing PySlice_GetIndicesEx(), right?
Yes. But based on Guido's comments and some thinking,
I don't think the API should change to longs. Your
solution below make sense, but didn't work.
> I think the better idea is to call _PyEval_SliceIndex for the step
> element of the slice too. And maybe change the latter from
>
> else if (x < -INT_MAX)
> x = 0;
>
> to
>
> else if (x < -INT_MAX)
> x = -INT_MAX;
>
> Can you test this on a 64 bit platform or shall I just check it in?
Tested on SF compile farm (ssh to compile.sf.net), they have a very
fast Alpha.
Here's the trimmed down diff:
Index: Python/ceval.c (in _PyEval_SliceIndex)
@@ -3507,7 +3507,7 @@
else if (x < -INT_MAX)
- x = 0;
+ x = -INT_MAX;
*pi = x;
Index: Objects/sliceobject.c
@@ -119,7 +119,7 @@
if (r->step == Py_None) {
*step = 1;
} else {
- *step = PyInt_AsLong(r->step);
+ if (!_PyEval_SliceIndex(r->step, step)) return -1;
if (*step == -1 && PyErr_Occurred()) {
return -1;
But this didn't produce the correct results:
>>> range(10)[::sys.maxint-1]
[]
Neal