bpo-43962: Fix _PyInterpreterState_IDIncref() (GH-25683)
_PyInterpreterState_IDIncref() now calls
_PyInterpreterState_IDInitref() and always increments id_refcount.
diff --git a/Objects/interpreteridobject.c b/Objects/interpreteridobject.c
index 39bde97..4623910 100644
--- a/Objects/interpreteridobject.c
+++ b/Objects/interpreteridobject.c
@@ -24,15 +24,21 @@ newinterpid(PyTypeObject *cls, int64_t id, int force)
}
}
+ if (interp != NULL) {
+ if (_PyInterpreterState_IDIncref(interp) < 0) {
+ return NULL;
+ }
+ }
+
interpid *self = PyObject_New(interpid, cls);
if (self == NULL) {
+ if (interp != NULL) {
+ _PyInterpreterState_IDDecref(interp);
+ }
return NULL;
}
self->id = id;
- if (interp != NULL) {
- _PyInterpreterState_IDIncref(interp);
- }
return self;
}