From: Thomas Heller Date: Sat, 18 Oct 2008 21:33:44 +0000 (+0000) Subject: Modify ctypes types with 'official' functions. Backport from trunk, X-Git-Tag: v2.5.3c1~28 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3e06faec4fa7e6afc266ca83ebd5444b1ddbc04a;p=python Modify ctypes types with 'official' functions. Backport from trunk, snv rev 59943 and 59946. --- diff --git a/Misc/NEWS b/Misc/NEWS index a492d46131..e62bb7cf6b 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -92,6 +92,9 @@ Core and builtins Library ------- +- Assigning methods to ctypes.Structure and ctypes.Union subclasses + after creation of the class does now work correctly. See Issue #1700288. + - Issue #3895: _lsprof could be crashed with an external timer that did not return a float when a Profiler object is garbage collected. diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 51a9cf8bb8..e97f9bb074 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -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 == PyType_Type.tp_setattro(self, key, value)) return -1; if (value && PyString_Check(key) &&