Kaydet (Commit) bd55c525 authored tarafından Amaury Forgeot d'Arc's avatar Amaury Forgeot d'Arc

#4930: Slightly cleaner (and faster) code in type creation:

compare slots by address, not by name.
üst d25f87ae
...@@ -6114,7 +6114,7 @@ update_one_slot(PyTypeObject *type, slotdef *p) ...@@ -6114,7 +6114,7 @@ update_one_slot(PyTypeObject *type, slotdef *p)
else if (Py_TYPE(descr) == &PyCFunction_Type && else if (Py_TYPE(descr) == &PyCFunction_Type &&
PyCFunction_GET_FUNCTION(descr) == PyCFunction_GET_FUNCTION(descr) ==
(PyCFunction)tp_new_wrapper && (PyCFunction)tp_new_wrapper &&
strcmp(p->name, "__new__") == 0) ptr == (void**)&type->tp_new)
{ {
/* The __new__ wrapper is not a wrapper descriptor, /* The __new__ wrapper is not a wrapper descriptor,
so must be special-cased differently. so must be special-cased differently.
...@@ -6134,7 +6134,7 @@ update_one_slot(PyTypeObject *type, slotdef *p) ...@@ -6134,7 +6134,7 @@ update_one_slot(PyTypeObject *type, slotdef *p)
point out a bug in this reasoning a beer. */ point out a bug in this reasoning a beer. */
} }
else if (descr == Py_None && else if (descr == Py_None &&
strcmp(p->name, "__hash__") == 0) { ptr == (void**)&type->tp_hash) {
/* We specifically allow __hash__ to be set to None /* We specifically allow __hash__ to be set to None
to prevent inheritance of the default to prevent inheritance of the default
implementation from object.__hash__ */ implementation from object.__hash__ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment