Kaydet (Commit) e363b143 authored tarafından Georg Brandl's avatar Georg Brandl

Fix refleaks in _ctypes PyCSimpleType_New, which fixes the refleak seen in test___all__.

üst b6edf193
...@@ -1889,17 +1889,16 @@ PyCSimpleType_new(PyTypeObject *type, PyObject *args, PyObject *kwds) ...@@ -1889,17 +1889,16 @@ PyCSimpleType_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
} }
fmt = _ctypes_get_fielddesc(PyString_AS_STRING(proto)); fmt = _ctypes_get_fielddesc(PyString_AS_STRING(proto));
if (fmt == NULL) { if (fmt == NULL) {
Py_DECREF(result);
PyErr_Format(PyExc_ValueError, PyErr_Format(PyExc_ValueError,
"_type_ '%s' not supported", "_type_ '%s' not supported",
PyString_AS_STRING(proto)); PyString_AS_STRING(proto));
return NULL; goto error;
} }
stgdict = (StgDictObject *)PyObject_CallObject( stgdict = (StgDictObject *)PyObject_CallObject(
(PyObject *)&PyCStgDict_Type, NULL); (PyObject *)&PyCStgDict_Type, NULL);
if (!stgdict) if (!stgdict)
return NULL; goto error;
stgdict->ffi_type_pointer = *fmt->pffi_type; stgdict->ffi_type_pointer = *fmt->pffi_type;
stgdict->align = fmt->pffi_type->alignment; stgdict->align = fmt->pffi_type->alignment;
...@@ -1914,6 +1913,7 @@ PyCSimpleType_new(PyTypeObject *type, PyObject *args, PyObject *kwds) ...@@ -1914,6 +1913,7 @@ PyCSimpleType_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
#endif #endif
if (stgdict->format == NULL) { if (stgdict->format == NULL) {
Py_DECREF(result); Py_DECREF(result);
Py_DECREF(proto);
Py_DECREF((PyObject *)stgdict); Py_DECREF((PyObject *)stgdict);
return NULL; return NULL;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment