GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||
GeezerVison is showing github.com — bpo-1635741: Add PyModule_AddObjectRef() function by vstinner · Pull Request #23122 · python/cpython Conversation
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Added PyModule_AddObjectRef() function: similar to PyModule_AddObjectRef() but don't steal a reference to the value on success.
|
@shihai1991: I updated my PR, would you mind to review it again? I completed the documentation (added examples without checking explicitly if the value is NULL) and I clarified the case when value is NULL. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
LGTM, perferct.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Ubuntu failed with: I re-run the job. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| } | ||
|
|
||
| return 0; | ||
| return PyModule_AddObjectRef(module, name, (PyObject *)type); |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
What's the reason for not decref'ing here, as opposed to PyModule_AddStringConstant and PyModule_AddIntConstant? PyModule_AddType used to steal a reference, but now it doesn't, no?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
The caller holds a strong reference to type.
Reference counting is hard to get right. That's why I added a new function. Previously, Py_INCREF(type) was needed before calling PyModule_AddObject(). I let you count +1 and -1 on the ref count in all code paths and check manually if my PR doesn't anything (hint: it should not ;-)).
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
The caller holds a strong reference to type.
Reference counting is hard to get right. That's why I added a new function. Previously, Py_INCREF(type) was needed before calling PyModule_AddObject(). I let you count +1 and -1 on the ref count in all code paths and check manually if my PR doesn't anything (hint: it should not ;-)).
Argh, I though I had it right :) Thanks for the explanation! 🙏🏻
Sorry, something went wrong.
There was an error while loading. Please reload this page.
* master: bpo-42260: Add _PyInterpreterState_SetConfig() (pythonGH-23158) Disable peg generator tests when building with PGO (pythonGH-23141) bpo-1635741: _sqlite3 uses PyModule_AddObjectRef() (pythonGH-23148) bpo-1635741: Fix PyInit_pyexpat() error handling (pythonGH-22489) bpo-42260: Main init modify sys.flags in-place (pythonGH-23150) bpo-1635741: Fix ref leak in _PyWarnings_Init() error path (pythonGH-23151) bpo-1635741: _ast uses PyModule_AddObjectRef() (pythonGH-23146) bpo-1635741: _contextvars uses PyModule_AddType() (pythonGH-23147) bpo-42260: Reorganize PyConfig (pythonGH-23149) bpo-1635741: Add PyModule_AddObjectRef() function (pythonGH-23122) bpo-42236: os.device_encoding() respects UTF-8 Mode (pythonGH-23119) bpo-42251: Add gettrace and getprofile to threading (pythonGH-23125) Enable signing of nuget.org packages and update to supported timestamp server (pythonGH-23132) Fix incorrect links in ast docs (pythonGH-23017) Add _PyType_GetModuleByDef (pythonGH-22835) Post 3.10.0a2 bpo-41796: Call _PyAST_Fini() earlier to fix a leak (pythonGH-23131) bpo-42249: Fix writing binary Plist files larger than 4 GiB. (pythonGH-23121) bpo-40077: Convert mmap.mmap static type to a heap type (pythonGH-23108) Python 3.10.0a2
Added PyModule_AddObjectRef() function: similar to PyModule_AddObjectRef() but don't steal a reference to the value on success.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.