bpo-43475: Fix worst case collision behavior for NaN instances (GH-25493)
diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index a65ebdf..91e06a8 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -412,10 +412,10 @@ static Py_hash_t
complex_hash(PyComplexObject *v)
{
Py_uhash_t hashreal, hashimag, combined;
- hashreal = (Py_uhash_t)_Py_HashDouble(v->cval.real);
+ hashreal = (Py_uhash_t)_Py_HashDouble((PyObject *) v, v->cval.real);
if (hashreal == (Py_uhash_t)-1)
return -1;
- hashimag = (Py_uhash_t)_Py_HashDouble(v->cval.imag);
+ hashimag = (Py_uhash_t)_Py_HashDouble((PyObject *)v, v->cval.imag);
if (hashimag == (Py_uhash_t)-1)
return -1;
/* Note: if the imaginary part is 0, hashimag is 0 now,
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index b3c41b1..7e78132 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -556,7 +556,7 @@ float_richcompare(PyObject *v, PyObject *w, int op)
static Py_hash_t
float_hash(PyFloatObject *v)
{
- return _Py_HashDouble(v->ob_fval);
+ return _Py_HashDouble((PyObject *)v, v->ob_fval);
}
static PyObject *