Fix reference leak noted in test_types:

Check for a[:] = a _before_ calling PySequence_Fast on a.
release23-maint candidate
Reference leak doesn't happen with head of release22-maint.
This commit is contained in:
Michael W. Hudson 2003-08-14 17:04:28 +00:00
parent 7d599482f2
commit b4f49385a3

View File

@ -472,15 +472,6 @@ list_ass_slice(PyListObject *a, int ilow, int ihigh, PyObject *v)
n = 0;
else {
char msg[256];
PyOS_snprintf(msg, sizeof(msg),
"must assign sequence"
" (not \"%.200s\") to slice",
v->ob_type->tp_name);
v_as_SF = PySequence_Fast(v, msg);
if(v_as_SF == NULL)
return -1;
n = PySequence_Fast_GET_SIZE(v_as_SF);
if (a == b) {
/* Special case "a[i:j] = a" -- copy b first */
int ret;
@ -491,6 +482,15 @@ list_ass_slice(PyListObject *a, int ilow, int ihigh, PyObject *v)
Py_DECREF(v);
return ret;
}
PyOS_snprintf(msg, sizeof(msg),
"must assign sequence"
" (not \"%.200s\") to slice",
v->ob_type->tp_name);
v_as_SF = PySequence_Fast(v, msg);
if(v_as_SF == NULL)
return -1;
n = PySequence_Fast_GET_SIZE(v_as_SF);
}
if (ilow < 0)
ilow = 0;