Skip to content
Open
2 changes: 1 addition & 1 deletion Include/internal/pycore_abstract.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ static inline int
_PyIndex_Check(PyObject *obj)
{
PyNumberMethods *tp_as_number = Py_TYPE(obj)->tp_as_number;
return (tp_as_number != NULL && tp_as_number->nb_index != NULL);
return (tp_as_number->nb_index != NULL);
}

// Exported for external JIT support
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Ensure :c:member:`~PyTypeObject.tp_as_number`,
:c:member:`~PyTypeObject.tp_as_sequence`, and
:c:member:`~PyTypeObject.tp_as_mapping` are never ``NULL`` after
:c:func:`PyType_Ready` by assigning shared empty structs as fallbacks.
Remove redundant ``NULL`` checks at callsites.
4 changes: 2 additions & 2 deletions Modules/_bisectmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ get_sq_item(PyObject *s)
// The parts of PySequence_GetItem that we only need to do once
PyTypeObject *tp = Py_TYPE(s);
PySequenceMethods *m = tp->tp_as_sequence;
if (m && m->sq_item) {
if (m->sq_item) {
return m->sq_item;
}
const char *msg;
if (tp->tp_as_mapping && tp->tp_as_mapping->mp_subscript) {
if (tp->tp_as_mapping->mp_subscript) {
msg = "%.200s is not a sequence";
}
else {
Expand Down
Loading
Loading