Skip to content

Commit a110817

Browse files
ZackerySpytzserhiy-storchaka
authored andcommitted
bpo-36150: Fix possible assertion failures due to _ctypes.c's PyCData_reduce(). (GH-12106) (GH-12643)
(cherry picked from commit 5f2c508)
1 parent dffe90e commit a110817

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

Modules/_ctypes/_ctypes.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2795,16 +2795,18 @@ static PyObject *
27952795
PyCData_reduce(PyObject *_self, PyObject *args)
27962796
{
27972797
CDataObject *self = (CDataObject *)_self;
2798+
PyObject *dict;
27982799

27992800
if (PyObject_stgdict(_self)->flags & (TYPEFLAG_ISPOINTER|TYPEFLAG_HASPOINTER)) {
28002801
PyErr_SetString(PyExc_ValueError,
28012802
"ctypes objects containing pointers cannot be pickled");
28022803
return NULL;
28032804
}
2804-
return Py_BuildValue("O(O(NN))",
2805-
_unpickle,
2806-
Py_TYPE(_self),
2807-
PyObject_GetAttrString(_self, "__dict__"),
2805+
dict = PyObject_GetAttrString(_self, "__dict__");
2806+
if (dict == NULL) {
2807+
return NULL;
2808+
}
2809+
return Py_BuildValue("O(O(NN))", _unpickle, Py_TYPE(_self), dict,
28082810
PyString_FromStringAndSize(self->b_ptr, self->b_size));
28092811
}
28102812

0 commit comments

Comments
 (0)