summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael W. Hudson <mwh@python.net>2002-11-06 15:17:32 (GMT)
committerMichael W. Hudson <mwh@python.net>2002-11-06 15:17:32 (GMT)
commitcbd6fb90069ded106833efc42b1c93bcf9b958c3 (patch)
tree8eeab999a6326865b004c50ebbf3dca1ebe1f334
parent9050a517c8393a473b42333281e36ec35370af35 (diff)
downloadcpython-cbd6fb90069ded106833efc42b1c93bcf9b958c3.zip
cpython-cbd6fb90069ded106833efc42b1c93bcf9b958c3.tar.gz
cpython-cbd6fb90069ded106833efc42b1c93bcf9b958c3.tar.bz2
Handle really big steps in extended slices.
Fixes a test failure on 64 bit platforms (I hope).
-rw-r--r--Objects/sliceobject.c7
-rw-r--r--Python/ceval.c2
2 files changed, 3 insertions, 6 deletions
diff --git a/Objects/sliceobject.c b/Objects/sliceobject.c
index a035e5f..7198cca 100644
--- a/Objects/sliceobject.c
+++ b/Objects/sliceobject.c
@@ -121,11 +121,8 @@ PySlice_GetIndicesEx(PySliceObject *r, int length,
*step = 1;
}
else {
- *step = PyInt_AsLong(r->step);
- if (*step == -1 && PyErr_Occurred()) {
- return -1;
- }
- else if (*step == 0) {
+ if (!_PyEval_SliceIndex(r->step, step)) return -1;
+ if (*step == 0) {
PyErr_SetString(PyExc_ValueError,
"slice step cannot be zero");
return -1;
diff --git a/Python/ceval.c b/Python/ceval.c
index afc480e..09b88a6 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3507,7 +3507,7 @@ _PyEval_SliceIndex(PyObject *v, int *pi)
if (x > INT_MAX)
x = INT_MAX;
else if (x < -INT_MAX)
- x = 0;
+ x = -INT_MAX;
*pi = x;
}
return 1;