gh-111178: Make slot functions in typeobject.c have compatible types by chrstphrchvz · Pull Request #112752 · python/cpython
There are likely many more changes to be made for gh-111178; this is just one small batch proposed separately for review by the respective codeowner.
Objects/typeobject.c:5352:5: warning: cast from 'void (*)(PyTypeObject *)' (aka 'void (*)(struct _typeobject *)') to 'destructor' (aka 'void (*)(struct _object *)') converts to incompatible function type [-Wcast-function-type-strict]
5352 | (destructor)type_dealloc, /* tp_dealloc */
| ^~~~~~~~~~~~~~~~~~~~~~~~
Objects/typeobject.c:5357:5: warning: cast from 'PyObject *(*)(PyTypeObject *)' (aka 'struct _object *(*)(struct _typeobject *)') to 'reprfunc' (aka 'struct _object *(*)(struct _object *)') converts to incompatible function type [-Wcast-function-type-strict]
5357 | (reprfunc)type_repr, /* tp_repr */
| ^~~~~~~~~~~~~~~~~~~
Objects/typeobject.c:5362:5: warning: cast from 'PyObject *(*)(PyTypeObject *, PyObject *, PyObject *)' (aka 'struct _object *(*)(struct _typeobject *, struct _object *, struct _object *)') to 'ternaryfunc' (aka 'struct _object *(*)(struct _object *, struct _object *, struct _object *)') converts to incompatible function type [-Wcast-function-type-strict]
5362 | (ternaryfunc)type_call, /* tp_call */
| ^~~~~~~~~~~~~~~~~~~~~~
Objects/typeobject.c:5364:5: warning: cast from 'PyObject *(*)(PyTypeObject *, PyObject *)' (aka 'struct _object *(*)(struct _typeobject *, struct _object *)') to 'getattrofunc' (aka 'struct _object *(*)(struct _object *, struct _object *)') converts to incompatible function type [-Wcast-function-type-strict]
5364 | (getattrofunc)_Py_type_getattro, /* tp_getattro */
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Objects/typeobject.c:5365:5: warning: cast from 'int (*)(PyTypeObject *, PyObject *, PyObject *)' (aka 'int (*)(struct _typeobject *, struct _object *, struct _object *)') to 'setattrofunc' (aka 'int (*)(struct _object *, struct _object *, struct _object *)') converts to incompatible function type [-Wcast-function-type-strict]
5365 | (setattrofunc)type_setattro, /* tp_setattro */
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Objects/typeobject.c:5372:5: warning: cast from 'int (*)(PyTypeObject *, visitproc, void *)' (aka 'int (*)(struct _typeobject *, int (*)(struct _object *, void *), void *)') to 'traverseproc' (aka 'int (*)(struct _object *, int (*)(struct _object *, void *), void *)') converts to incompatible function type [-Wcast-function-type-strict]
5372 | (traverseproc)type_traverse, /* tp_traverse */
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Objects/typeobject.c:5373:5: warning: cast from 'int (*)(PyTypeObject *)' (aka 'int (*)(struct _typeobject *)') to 'inquiry' (aka 'int (*)(struct _object *)') converts to incompatible function type [-Wcast-function-type-strict]
5373 | (inquiry)type_clear, /* tp_clear */
| ^~~~~~~~~~~~~~~~~~~
Objects/typeobject.c:5390:5: warning: cast from 'int (*)(PyTypeObject *)' (aka 'int (*)(struct _typeobject *)') to 'inquiry' (aka 'int (*)(struct _object *)') converts to incompatible function type [-Wcast-function-type-strict]
5390 | (inquiry)type_is_gc, /* tp_is_gc */
| ^~~~~~~~~~~~~~~~~~~
Objects/typeobject.c:6572:5: warning: cast from 'Py_hash_t (*)(const void *)' (aka 'long (*)(const void *)') to 'hashfunc' (aka 'long (*)(struct _object *)') converts to incompatible function type [-Wcast-function-type-strict]
6572 | (hashfunc)_Py_HashPointer, /* tp_hash */
| ^~~~~~~~~~~~~~~~~~~~~~~~~
Objects/typeobject.c:7788:12: runtime error: call to function _Py_type_getattro through pointer to incorrect function type 'struct _object *(*)(struct _object *, struct _object *)'
typeobject.c:4921: note: _Py_type_getattro defined here
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Objects/typeobject.c:7788:12 in
Objects/call.c:242:18: runtime error: call to function type_call through pointer to incorrect function type 'struct _object *(*)(struct _object *, struct _object *, struct _object *)'
typeobject.c:1634: note: type_call defined here
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Objects/call.c:242:18 in
Objects/typeobject.c:1905:16: runtime error: call to function type_clear through pointer to incorrect function type 'int (*)(struct _object *)'
typeobject.c:5290: note: type_clear defined here
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Objects/typeobject.c:1905:16 in
Include/internal/pycore_object.h:444:43: runtime error: call to function type_is_gc through pointer to incorrect function type 'int (*)(struct _object *)'
typeobject.c:5338: note: type_is_gc defined here
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Include/internal/pycore_object.h:444:43 in
Objects/typeobject.c:5581:12: runtime error: call to function type_repr through pointer to incorrect function type 'struct _object *(*)(struct _object *)'
typeobject.c:1601: note: type_repr defined here
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Objects/typeobject.c:5581:12 in
Objects/object.c:1308:15: runtime error: call to function type_setattro through pointer to incorrect function type 'int (*)(struct _object *, struct _object *, struct _object *)'
typeobject.c:4927: note: type_setattro defined here
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Objects/object.c:1308:15 in
Modules/_ctypes/_ctypes.c:908:12: runtime error: call to function type_traverse through pointer to incorrect function type 'int (*)(struct _object *, int (*)(struct _object *, void *), void *)'
typeobject.c:5261: note: type_traverse defined here
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior Modules/_ctypes/_ctypes.c:908:12 in