-
-
Notifications
You must be signed in to change notification settings - Fork 31.7k
bpo-1635741: Add PyModule_AddObjectRef() function #23122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, perferct.
Ubuntu failed with:
I re-run the job. |
} | ||
|
||
return 0; | ||
return PyModule_AddObjectRef(module, name, (PyObject *)type); |
There was a problem hiding this comment.
Choose a reason for 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?
There was a problem hiding this comment.
Choose a reason for 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 ;-)).
There was a problem hiding this comment.
Choose a reason for 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! 🙏🏻
* 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.
https://bugs.python.org/issue1635741