mirror of https://github.com/python/cpython.git
Issue #13020: Fix a reference leak when allocating a structsequence object fails.
Patch by Suman Saha.
This commit is contained in:
commit
552be9b214
|
@ -10,6 +10,9 @@ What's New in Python 3.3 Alpha 1?
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #13020: Fix a reference leak when allocating a structsequence object
|
||||
fails. Patch by Suman Saha.
|
||||
|
||||
- Issue #13777: Add PF_SYSTEM sockets on OS X.
|
||||
Patch by Michael Goderbauer.
|
||||
|
||||
|
|
|
@ -103,32 +103,33 @@ structseq_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
|||
if (min_len != max_len) {
|
||||
if (len < min_len) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%.500s() takes an at least %zd-sequence (%zd-sequence given)",
|
||||
type->tp_name, min_len, len);
|
||||
Py_DECREF(arg);
|
||||
return NULL;
|
||||
"%.500s() takes an at least %zd-sequence (%zd-sequence given)",
|
||||
type->tp_name, min_len, len);
|
||||
Py_DECREF(arg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (len > max_len) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%.500s() takes an at most %zd-sequence (%zd-sequence given)",
|
||||
type->tp_name, max_len, len);
|
||||
Py_DECREF(arg);
|
||||
return NULL;
|
||||
"%.500s() takes an at most %zd-sequence (%zd-sequence given)",
|
||||
type->tp_name, max_len, len);
|
||||
Py_DECREF(arg);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (len != min_len) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%.500s() takes a %zd-sequence (%zd-sequence given)",
|
||||
type->tp_name, min_len, len);
|
||||
Py_DECREF(arg);
|
||||
return NULL;
|
||||
"%.500s() takes a %zd-sequence (%zd-sequence given)",
|
||||
type->tp_name, min_len, len);
|
||||
Py_DECREF(arg);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
res = (PyStructSequence*) PyStructSequence_New(type);
|
||||
if (res == NULL) {
|
||||
Py_DECREF(arg);
|
||||
return NULL;
|
||||
}
|
||||
for (i = 0; i < len; ++i) {
|
||||
|
|
Loading…
Reference in New Issue