diff options
author | Xiang Zhang <angwerzx@126.com> | 2017-05-10 11:11:09 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-10 11:11:09 (GMT) |
commit | 639e295650a51894412c9d976958792010d3bcf8 (patch) | |
tree | 3d4ef3afa5c5b3f2c2f6ccf93db87aa04867b4e6 /Objects | |
parent | 9721729952d5844505fda01efd1c4149acb59220 (diff) | |
download | cpython-639e295650a51894412c9d976958792010d3bcf8.zip cpython-639e295650a51894412c9d976958792010d3bcf8.tar.gz cpython-639e295650a51894412c9d976958792010d3bcf8.tar.bz2 |
bpo-30281: Fix the default value for stop in PySlice_Unpack() (#1530) (#1480)
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/sliceobject.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Objects/sliceobject.c b/Objects/sliceobject.c index 6a69021..3259947 100644 --- a/Objects/sliceobject.c +++ b/Objects/sliceobject.c @@ -197,6 +197,8 @@ PySlice_Unpack(PyObject *_r, PySliceObject *r = (PySliceObject*)_r; /* this is harder to get right than you might think */ + assert(PY_SSIZE_T_MIN + 1 <= -PY_SSIZE_T_MAX); + if (r->step == Py_None) { *step = 1; } @@ -217,14 +219,14 @@ PySlice_Unpack(PyObject *_r, } if (r->start == Py_None) { - *start = *step < 0 ? PY_SSIZE_T_MAX-1 : 0;; + *start = *step < 0 ? PY_SSIZE_T_MAX : 0; } else { if (!_PyEval_SliceIndex(r->start, start)) return -1; } if (r->stop == Py_None) { - *stop = *step < 0 ? -PY_SSIZE_T_MAX : PY_SSIZE_T_MAX; + *stop = *step < 0 ? PY_SSIZE_T_MIN : PY_SSIZE_T_MAX; } else { if (!_PyEval_SliceIndex(r->stop, stop)) return -1; @@ -258,7 +260,7 @@ PySlice_AdjustIndices(Py_ssize_t length, *stop = (step < 0) ? -1 : 0; } } - else if (*stop >= length) { + else if (*stop >= length) { *stop = (step < 0) ? length - 1 : length; } |