Fix variable/format-char discrepancy in new-style class __getitem__,
__delitem__, __setslice__ and __delslice__ hooks. This caused test_weakref and test_userlist to fail in the p3yk branch (where UserList, like all classes, is new-style) on amd64 systems, with open-ended slices: the sys.maxint value for empty-endpoint was transformed into -1.
This commit is contained in:
parent
64ed043c9a
commit
4e908107b0
|
@ -4186,10 +4186,10 @@ slot_sq_ass_item(PyObject *self, Py_ssize_t index, PyObject *value)
|
||||||
|
|
||||||
if (value == NULL)
|
if (value == NULL)
|
||||||
res = call_method(self, "__delitem__", &delitem_str,
|
res = call_method(self, "__delitem__", &delitem_str,
|
||||||
"(i)", index);
|
"(n)", index);
|
||||||
else
|
else
|
||||||
res = call_method(self, "__setitem__", &setitem_str,
|
res = call_method(self, "__setitem__", &setitem_str,
|
||||||
"(iO)", index, value);
|
"(nO)", index, value);
|
||||||
if (res == NULL)
|
if (res == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
Py_DECREF(res);
|
Py_DECREF(res);
|
||||||
|
@ -4204,10 +4204,10 @@ slot_sq_ass_slice(PyObject *self, Py_ssize_t i, Py_ssize_t j, PyObject *value)
|
||||||
|
|
||||||
if (value == NULL)
|
if (value == NULL)
|
||||||
res = call_method(self, "__delslice__", &delslice_str,
|
res = call_method(self, "__delslice__", &delslice_str,
|
||||||
"(ii)", i, j);
|
"(nn)", i, j);
|
||||||
else
|
else
|
||||||
res = call_method(self, "__setslice__", &setslice_str,
|
res = call_method(self, "__setslice__", &setslice_str,
|
||||||
"(iiO)", i, j, value);
|
"(nnO)", i, j, value);
|
||||||
if (res == NULL)
|
if (res == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
Py_DECREF(res);
|
Py_DECREF(res);
|
||||||
|
|
Loading…
Reference in New Issue