mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
_PyEval_SliceIndex(): Repaired the comments, and added XXX comments
about its dubious treatment of NULL (also opened a bug report on that, but don't want to risk changing it this late in the 2.2 game).
This commit is contained in:
parent
0c0b5305ae
commit
cb479e78e0
1 changed files with 11 additions and 6 deletions
|
@ -3328,14 +3328,18 @@ loop_subscript(PyObject *v, PyObject *w)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Extract a slice index from a PyInt or PyLong, the index is bound to
|
/* Extract a slice index from a PyInt or PyLong, and store in *pi.
|
||||||
the range [-INT_MAX+1, INTMAX]. Returns 0 and an exception if there is
|
Silently reduce values larger than INT_MAX to INT_MAX, and silently
|
||||||
and error. Returns 1 on success.*/
|
boost values less than -INT_MAX to 0. Return 0 on error, 1 on success.
|
||||||
|
*/
|
||||||
|
/* XXX If v is NULL, this goes out of its way to indicate success(!), but
|
||||||
|
XXX doesn't store into *pi. Why isn't that an error, or at least v!=NULL
|
||||||
|
XXX an asserted precondition?
|
||||||
|
*/
|
||||||
int
|
int
|
||||||
_PyEval_SliceIndex(PyObject *v, int *pi)
|
_PyEval_SliceIndex(PyObject *v, int *pi)
|
||||||
{
|
{
|
||||||
if (v != NULL) {
|
if (v != NULL) { /* XXX why isn't this assert(v != NULL()? */
|
||||||
long x;
|
long x;
|
||||||
if (PyInt_Check(v)) {
|
if (PyInt_Check(v)) {
|
||||||
x = PyInt_AsLong(v);
|
x = PyInt_AsLong(v);
|
||||||
|
@ -3362,7 +3366,8 @@ _PyEval_SliceIndex(PyObject *v, int *pi)
|
||||||
|
|
||||||
/* Create a long integer with a value of 0 */
|
/* Create a long integer with a value of 0 */
|
||||||
long_zero = PyLong_FromLong(0L);
|
long_zero = PyLong_FromLong(0L);
|
||||||
if (long_zero == NULL) return 0;
|
if (long_zero == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* Check sign */
|
/* Check sign */
|
||||||
cmp = PyObject_RichCompareBool(v, long_zero,
|
cmp = PyObject_RichCompareBool(v, long_zero,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue