Skip to content

Commit 3a766d8

Browse files
committed
Handle the mathematically challenged function _PyTuple_Resize
1 parent 269832a commit 3a766d8

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

Objects/tupleobject.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -895,7 +895,6 @@ _PyTuple_Resize(PyObject **pv, Py_ssize_t newsize)
895895
{
896896
PyTupleObject *v;
897897
PyTupleObject *sv;
898-
Py_ssize_t i;
899898
Py_ssize_t oldsize;
900899

901900
v = (PyTupleObject *) *pv;
@@ -934,7 +933,7 @@ _PyTuple_Resize(PyObject **pv, Py_ssize_t newsize)
934933
_Py_ForgetReference((PyObject *) v);
935934
#endif
936935
/* DECREF items deleted by shrinkage */
937-
for (i = newsize; i < oldsize; i++) {
936+
for (Py_ssize_t i = newsize; i < oldsize; i++) {
938937
Py_CLEAR(v->ob_item[i]);
939938
}
940939
sv = PyObject_GC_Resize(PyTupleObject, v, newsize);
@@ -947,10 +946,10 @@ _PyTuple_Resize(PyObject **pv, Py_ssize_t newsize)
947946
return -1;
948947
}
949948
_Py_NewReferenceNoTotal((PyObject *) sv);
950-
/* Zero out items added by growing */
951-
if (newsize > oldsize)
952-
memset(&sv->ob_item[oldsize], 0,
953-
sizeof(*sv->ob_item) * (newsize - oldsize));
949+
/* Set items added by growing to None */
950+
for (Py_ssize_t i = oldsize; i < newsize; i++) {
951+
sv->ob_item[i] = Py_None;
952+
}
954953
*pv = (PyObject *) sv;
955954
_PyObject_GC_TRACK(sv);
956955
return 0;

0 commit comments

Comments
 (0)