Skip to content

Commit dace9c4

Browse files
lookup_subclasses() never fails.
1 parent 12d682a commit dace9c4

File tree

2 files changed

+3
-13
lines changed

2 files changed

+3
-13
lines changed

Objects/structseq.c

-1
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,6 @@ _PyStructSequence_FiniType(PyTypeObject *type)
581581

582582
// Cannot delete a type if it still has subclasses
583583
if (_PyType_HasSubclasses(type)) {
584-
PyErr_Clear();
585584
return;
586585
}
587586

Objects/typeobject.c

+3-12
Original file line numberDiff line numberDiff line change
@@ -784,8 +784,7 @@ mro_hierarchy(PyTypeObject *type, PyObject *temp)
784784
Py_XDECREF(old_mro);
785785

786786
// Avoid creating an empty list if there is no subclass
787-
res = _PyType_HasSubclasses(type);
788-
if (res > 0) {
787+
if (_PyType_HasSubclasses(type)) {
789788
/* Obtain a copy of subclasses list to iterate over.
790789
791790
Otherwise type->tp_subclasses might be altered
@@ -4314,7 +4313,6 @@ clear_static_tp_subclasses(PyTypeObject *type)
43144313
{
43154314
PyObject *subclasses = lookup_subclasses(type);
43164315
if (subclasses == NULL) {
4317-
PyErr_Clear();
43184316
return;
43194317
}
43204318

@@ -4438,7 +4436,7 @@ _PyType_HasSubclasses(PyTypeObject *self)
44384436
return 0;
44394437
}
44404438
if (lookup_subclasses(self) == NULL) {
4441-
return PyErr_Occurred() ? -1 : 0;
4439+
return 0;
44424440
}
44434441
return 1;
44444442
}
@@ -4453,9 +4451,6 @@ _PyType_GetSubclasses(PyTypeObject *self)
44534451

44544452
PyObject *subclasses = lookup_subclasses(self); // borrowed ref
44554453
if (subclasses == NULL) {
4456-
if (PyErr_Occurred()) {
4457-
return NULL;
4458-
}
44594454
return list;
44604455
}
44614456
assert(PyDict_CheckExact(subclasses));
@@ -6880,9 +6875,6 @@ add_subclass(PyTypeObject *base, PyTypeObject *type)
68806875
// arbitrary Python code and so modify base->tp_subclasses.
68816876
PyObject *subclasses = lookup_subclasses(base);
68826877
if (subclasses == NULL) {
6883-
if (PyErr_Occurred()) {
6884-
return -1;
6885-
}
68866878
subclasses = init_subclasses(base);
68876879
if (subclasses == NULL) {
68886880
Py_DECREF(key);
@@ -6958,7 +6950,6 @@ remove_subclass(PyTypeObject *base, PyTypeObject *type)
69586950
{
69596951
PyObject *subclasses = lookup_subclasses(base); // borrowed ref
69606952
if (subclasses == NULL) {
6961-
PyErr_Clear();
69626953
return;
69636954
}
69646955
assert(PyDict_CheckExact(subclasses));
@@ -9047,7 +9038,7 @@ recurse_down_subclasses(PyTypeObject *type, PyObject *attr_name,
90479038
// tp_subclasses.
90489039
PyObject *subclasses = lookup_subclasses(type); // borrowed ref
90499040
if (subclasses == NULL) {
9050-
return PyErr_Occurred() ? -1 : 0;
9041+
return 0;
90519042
}
90529043
assert(PyDict_CheckExact(subclasses));
90539044

0 commit comments

Comments
 (0)