◐ Shell
clean mode source ↗

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