Skip to content

Commit e4337e2

Browse files
Fix the empty tuple case for clear_tp_bases().
1 parent 86f8ec6 commit e4337e2

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

Objects/typeobject.c

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -306,11 +306,14 @@ clear_tp_bases(PyTypeObject *self)
306306
{
307307
if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
308308
if (_Py_IsMainInterpreter(_PyInterpreterState_GET())) {
309-
if (self->tp_bases != NULL
310-
&& PyTuple_GET_SIZE(self->tp_bases) > 0)
311-
{
312-
assert(_Py_IsImmortal(self->tp_bases));
313-
_Py_ClearImmortal(self->tp_bases);
309+
if (self->tp_bases != NULL) {
310+
if (PyTuple_GET_SIZE(self->tp_bases) == 0) {
311+
Py_CLEAR(self->tp_bases);
312+
}
313+
else {
314+
assert(_Py_IsImmortal(self->tp_bases));
315+
_Py_ClearImmortal(self->tp_bases);
316+
}
314317
}
315318
}
316319
return;
@@ -352,11 +355,14 @@ clear_tp_mro(PyTypeObject *self)
352355
{
353356
if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
354357
if (_Py_IsMainInterpreter(_PyInterpreterState_GET())) {
355-
if (self->tp_mro != NULL
356-
&& PyTuple_GET_SIZE(self->tp_mro) > 0)
357-
{
358-
assert(_Py_IsImmortal(self->tp_mro));
359-
_Py_ClearImmortal(self->tp_mro);
358+
if (self->tp_mro != NULL) {
359+
if (PyTuple_GET_SIZE(self->tp_mro) == 0) {
360+
Py_CLEAR(self->tp_mro);
361+
}
362+
else {
363+
assert(_Py_IsImmortal(self->tp_mro));
364+
_Py_ClearImmortal(self->tp_mro);
365+
}
360366
}
361367
}
362368
return;

0 commit comments

Comments
 (0)