[Python-checkins] cpython (2.7): Issue #25961: Fixed compilation error and a leak in type constructor.
serhiy.storchaka
python-checkins at python.org
Thu Dec 31 05:08:13 EST 2015
https://hg.python.org/cpython/rev/57fea6f75ac2
changeset: 99729:57fea6f75ac2
branch: 2.7
parent: 99726:29cc6b2f9d28
user: Serhiy Storchaka <storchaka at gmail.com>
date: Thu Dec 31 12:03:14 2015 +0200
summary:
Issue #25961: Fixed compilation error and a leak in type constructor.
files:
Objects/typeobject.c | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -2342,12 +2342,17 @@
type->tp_as_mapping = &et->as_mapping;
type->tp_as_buffer = &et->as_buffer;
type->tp_name = PyString_AS_STRING(name);
- if (!type->tp_name)
- goto error;
+ if (!type->tp_name) {
+ Py_DECREF(bases);
+ Py_DECREF(type);
+ return NULL;
+ }
if (strlen(type->tp_name) != (size_t)PyString_GET_SIZE(name)) {
PyErr_SetString(PyExc_ValueError,
"type name must not contain null characters");
- goto error;
+ Py_DECREF(bases);
+ Py_DECREF(type);
+ return NULL;
}
/* Set tp_base and tp_bases */
@@ -2369,8 +2374,10 @@
tmp = PyDict_GetItemString(tmp, "__name__");
if (tmp != NULL) {
if (PyDict_SetItemString(dict, "__module__",
- tmp) < 0)
+ tmp) < 0) {
+ Py_DECREF(type);
return NULL;
+ }
}
}
}
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list