Commit 9fbe885b authored by Amaury Forgeot d'Arc's avatar Amaury Forgeot d'Arc

As discussed in issue 1700288:

ctypes takes some liberties when creating python types: it modifies the types'
__dict__ directly, bypassing all the machinery of type objects which deal with
special methods.  And this broke recent optimisations of method lookup.
Now we try to modify the type with more "official" functions.
parent 2df25c35
......@@ -410,7 +410,7 @@ static int
StructType_setattro(PyObject *self, PyObject *key, PyObject *value)
{
/* XXX Should we disallow deleting _fields_? */
if (-1 == PyObject_GenericSetAttr(self, key, value))
if (-1 == Py_TYPE(self)->tp_base->tp_setattro(self, key, value))
return -1;
if (value && PyString_Check(key) &&
......
......@@ -470,7 +470,7 @@ StructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct)
Py_DECREF(pair);
return -1;
}
if (-1 == PyDict_SetItem(realdict, name, prop)) {
if (-1 == PyObject_SetAttr(type, name, prop)) {
Py_DECREF(prop);
Py_DECREF(pair);
return -1;
......
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