Before calling _PyType_Lookup() the type needs to be initialized.
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 9bbf64b..d087e9c 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1383,6 +1383,11 @@
kwlist, &number, &ndigits))
return NULL;
+ if (Py_Type(number)->tp_dict == NULL) {
+ if (PyType_Ready(Py_Type(number)) < 0)
+ return NULL;
+ }
+
if (round_str == NULL) {
round_str = PyUnicode_FromString("__round__");
if (round_str == NULL)
@@ -1497,6 +1502,11 @@
static PyObject *trunc_str = NULL;
PyObject *trunc;
+ if (Py_Type(number)->tp_dict == NULL) {
+ if (PyType_Ready(Py_Type(number)) < 0)
+ return NULL;
+ }
+
if (trunc_str == NULL) {
trunc_str = PyUnicode_FromString("__trunc__");
if (trunc_str == NULL)