Issue 30281: set stop default to -PY_SSIZE_T_MAX-1 in PySlice_Unpack (original) (raw)

Created on 2017-05-05 10:47 by xiang.zhang, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 1480 merged xiang.zhang,2017-05-05 10:50
PR 1529 merged xiang.zhang,2017-05-10 10:33
PR 1530 merged xiang.zhang,2017-05-10 10:33
PR 1531 merged xiang.zhang,2017-05-10 10:36
Messages (8)
msg293097 - (view) Author: Xiang Zhang (xiang.zhang) * (Python committer) Date: 2017-05-05 10:47
The default value for stop in PySlice_Unpack should be -PY_SSIZE_T_MAX-1. Otherwise a sequence of length PY_SSIZE_T_MAX could get a wrong slicelength when doing L[::-1].
msg293098 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2017-05-05 10:56
I'm not sure that -PY_SSIZE_T_MAX-1 always is representable. I would use PY_SSIZE_T_MIN and add a static assert (Py_BUILD_ASSERT) that PY_SSIZE_T_MIN + 1 <= -PY_SSIZE_T_MAX. Actually currently PY_SSIZE_T_MIN is -PY_SSIZE_T_MAX-1 by definition, but this can be changed in future.
msg293101 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2017-05-05 11:54
Hum, integer overflows are complex issues. It deserves an unit test, maybe even in C written in _testcapi?
msg293116 - (view) Author: Xiang Zhang (xiang.zhang) * (Python committer) Date: 2017-05-05 16:02
I am okay to use PY_SSIZE_T_MIN. But if we are worried about future change of PY_SSIZE_T_MIN, seems we also need to change the API doc of PySlice_Unpack(). Although _PyEval_SliceIndex's comment says it clips value to -PY_SSIZE_T_MAX-1, actually it uses PyNumber_AsSize_t and clips value to PY_SSIZE_T_MIN.
msg293396 - (view) Author: Xiang Zhang (xiang.zhang) * (Python committer) Date: 2017-05-10 10:19
New changeset 2ddf5a19c3a06978edff2c8ba0aaf5df3528204a by Xiang Zhang in branch 'master': bpo-30281: Fix the default value for stop in PySlice_Unpack() (#1480) https://github.com/python/cpython/commit/2ddf5a19c3a06978edff2c8ba0aaf5df3528204a
msg293399 - (view) Author: Xiang Zhang (xiang.zhang) * (Python committer) Date: 2017-05-10 11:00
New changeset 98b49a00d413972965044fd355be3b8482caa07c by Xiang Zhang in branch '3.6': bpo-30281: Fix the default value for stop in PySlice_Unpack() (#1480) (#1529) https://github.com/python/cpython/commit/98b49a00d413972965044fd355be3b8482caa07c
msg293400 - (view) Author: Xiang Zhang (xiang.zhang) * (Python committer) Date: 2017-05-10 11:11
New changeset 639e295650a51894412c9d976958792010d3bcf8 by Xiang Zhang in branch '3.5': bpo-30281: Fix the default value for stop in PySlice_Unpack() (#1530) (#1480https://github.com/python/cpython/commit/639e295650a51894412c9d976958792010d3bcf8
msg293402 - (view) Author: Xiang Zhang (xiang.zhang) * (Python committer) Date: 2017-05-10 11:20
New changeset 05469fa1c05acf55bdca05db21822ecdd7f6487a by Xiang Zhang in branch '2.7': bpo-30281: Fix the default value for stop in PySlice_Unpack() (#1531) (#1480) https://github.com/python/cpython/commit/05469fa1c05acf55bdca05db21822ecdd7f6487a
History
Date User Action Args
2022-04-11 14:58:46 admin set github: 74467
2017-05-10 11:21:37 xiang.zhang set status: open -> closedresolution: fixedstage: patch review -> resolved
2017-05-10 11:20:31 xiang.zhang set messages: +
2017-05-10 11:11:11 xiang.zhang set messages: +
2017-05-10 11:00:18 xiang.zhang set messages: +
2017-05-10 10:36:32 xiang.zhang set pull_requests: + <pull%5Frequest1630>
2017-05-10 10:33:45 xiang.zhang set pull_requests: + <pull%5Frequest1629>
2017-05-10 10:33:06 xiang.zhang set pull_requests: + <pull%5Frequest1628>
2017-05-10 10:19:44 xiang.zhang set messages: +
2017-05-05 16:02:36 xiang.zhang set messages: +
2017-05-05 11:54:51 vstinner set nosy: + vstinnermessages: +
2017-05-05 10:56:04 serhiy.storchaka set nosy: + mark.dickinsonmessages: +
2017-05-05 10:50:02 xiang.zhang set pull_requests: + <pull%5Frequest1579>
2017-05-05 10:47:45 xiang.zhang create