Message194893
I absolutely agree on mentioning the member names in the comments. :-)
In the example Martin gave in his PEP 3121, the PyInit does not perform any INCREFs on the Variables that are referenced from inside the module state.
He therefore left out m_free completely as there was nothing to DECREF within the module state.
Back when I did my GSoC together with Martin, we decided that the Module state itself can be considered a valid container object, an therefore has to INCREF and in the end of its lifecycle (that is within m_free) also DECREF every object reference it holds. I therefore decided to include that into every module I refactored, and consequently also the xxmodule.
I was also thinking about redefining the macro of xx_state_global with a NULL check, however this would lead either to a redundant call of PyState_FindModule (Which may lead to unnecessary performance degregation as xx_state_global is used quite frequently in some parts of the respective module) or I had to find some awkward way to store the result o f FindModule in some local variable exapnded by the macro, which I would not consider a good idea. Instead Martin and I were thinking of including a NULL safe variant of xx_state_global only in CPython Debug Builds. What do you think about that? |
|
Date |
User |
Action |
Args |
2013-08-11 12:37:10 | Robin.Schreiber | set | recipients:
+ Robin.Schreiber, loewis, belopolsky |
2013-08-11 12:37:10 | Robin.Schreiber | set | messageid: <1376224630.02.0.458660909151.issue15849@psf.upfronthosting.co.za> |
2013-08-11 12:37:10 | Robin.Schreiber | link | issue15849 messages |
2013-08-11 12:37:09 | Robin.Schreiber | create | |
|