Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Description
Bug report
There have been changes to how the macros for casting PyObject pointers per#91959 (comment) by@vstinner any new compiler warnings are a regression.
There were two types of errors in greenlet, one related to const correctness which has been fixed via#92138) and one related to casting wrapper classes (that has not been fixed).
Per@serge-sans-paille in#92138 (comment)
That's an interesting situation: greenlets are written in C++, and the object that raises issues is of type greenlet::refs::OwnedErrPiece that has a conversion operator to PyObject* (namely:https://github.com/python-greenlet/greenlet/blob/be41e1a24925326b72a02ef5cb6d1ed9643eb062/src/greenlet/greenlet_refs.hpp#L924 ) Using C-style cast or static_cast directly uses that operator so that's fine. But a reinterpret_cast won't work.
and suggests a patch to CPython.
python-greenlet/greenlet#302 is a fix on the greenlet side.
The key line of the error is
src/greenlet/greenlet_refs.hpp: In member function ‘void greenlet::refs::PyErrPieces::normalize()’:/home/tcaswell/.pybuild/bleeding/include/python3.12/pyport.h:30:25: error: invalid cast from type ‘greenlet::refs::OwnedErrPiece’ to type ‘const PyObject*’ {aka ‘const _object*’} 30 | const_cast<type>(reinterpret_cast<const type>(expr)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~This is also affectingpython/pyperformance#198
A bunch of links:#92800 (comment)
Your environment
- CPython versions tested on: main branch
- Operating system and architecture: linux and x86_64