bpo-1635741: port pyexpat to multi-phase init (PEP 489)#22222
bpo-1635741: port pyexpat to multi-phase init (PEP 489)#22222vstinner merged 3 commits intopython:masterfrom
Conversation
|
@vstinner @corona10 @shihai1991 please review. There's PyCapsule_New usage but the capsule methods did not depend on any globals so it isn't a concern in this case. |
|
compile warning in here: |
Oops, I forgot to add this to the type slots. Should be fixed now |
Modules/pyexpat.c
Outdated
There was a problem hiding this comment.
DECREF is needed on error, no? Same comment for the following PyModule_AddObject calls.
Modules/pyexpat.c
Outdated
There was a problem hiding this comment.
I would prefer to "goto error" if PyModule_New() fails.
|
Maybe it would be simpler to extract changes which add error handling to the exec function, and write a second PR to convert the module to multi-phase init. Since the existing code basically has no code to handle errors :-( You can rename pyexpat_exec() to PyInit_pyexpat() and just add Py_DECREF(m) in "goto error". |
|
I would prefer to get PR #22489 merged before this one, to ease review ;-) |
bf06df6 to
c483618
Compare
|
@vstinner rebased and I think ready to go. Please review |
c483618 to
5262887
Compare
|
Shouldn't |
|
@shihai1991 made expat_CAPI per module instance in commit 7c83eaa. I merged the PR, thanks @koubaa!
Hum. It doesn't contain anything dynamically allocated. It's a static array of static data. I don't think that we have to make it per instance. |
https://bugs.python.org/issue1635741