From 0509c4547fc95cc32a91ac446a26192c3bfdf157 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 20 May 2020 01:57:17 +0200 Subject: [PATCH] bpo-40521: Fix update_slot() when INTERN_NAME_STRINGS is not defined (#20246) Fix type update_slot() function when the macro INTERN_NAME_STRINGS is not defined: use _PyUnicode_EQ() in this case. --- Objects/typeobject.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 243f8811b62..0e055d677f1 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -7661,8 +7661,17 @@ update_slot(PyTypeObject *type, PyObject *name) assert(slotdefs_initialized); pp = ptrs; for (p = slotdefs; p->name; p++) { - if (p->name_strobj == name) + assert(PyUnicode_CheckExact(p->name_strobj)); + assert(PyUnicode_CheckExact(name)); +#ifdef INTERN_NAME_STRINGS + if (p->name_strobj == name) { *pp++ = p; + } +#else + if (p->name_strobj == name || _PyUnicode_EQ(p->name_strobj, name)) { + *pp++ = p; + } +#endif } *pp = NULL; for (pp = ptrs; *pp; pp++) {