Eryk Sun added the comment:

In 3.6, type_new in Objects/typeobject.c sets the __classcell__ in the dict if 
it's a cell object. It happens that CreateSwappedType in 
Modules/_ctypes/_ctypes.c re-uses the dict to create the swapped type (e.g. big 
endian), which in turn updates the __classcell__. Thus in 
builtin___build_class__ in Python/bltinmodule.c, the check `cell_cls != cls` 
ends up being true, which leads to the observed TypeError. CreateSwappedType 
should be able to avoid this by either deleting "__classcell__" from the dict 
or creating a copy without it before passing it to type_new.

----------
nosy: +eryksun

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue29270>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to