aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Objects/floatobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/floatobject.c')
-rw-r--r--Objects/floatobject.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 7fc192e7201..f8620d6f8ef 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -6,6 +6,7 @@
#include "Python.h"
#include "pycore_dtoa.h" // _Py_dg_dtoa()
#include "pycore_floatobject.h" // _PyFloat_FormatAdvancedWriter()
+#include "pycore_initconfig.h" // _PyStatus_OK()
#include "pycore_interp.h" // _PyInterpreterState.float_state
#include "pycore_long.h" // _PyLong_GetOne()
#include "pycore_object.h" // _PyObject_Init()
@@ -1981,8 +1982,12 @@ PyTypeObject PyFloat_Type = {
};
void
-_PyFloat_Init(void)
+_PyFloat_InitState(PyInterpreterState *interp)
{
+ if (!_Py_IsMainInterpreter(interp)) {
+ return;
+ }
+
/* We attempt to determine if this machine is using IEEE
floating point formats by peering at the bits of some
carefully chosen values. If it looks like we are on an
@@ -2030,16 +2035,25 @@ _PyFloat_Init(void)
float_format = detected_float_format;
}
-int
-_PyFloat_InitTypes(void)
+PyStatus
+_PyFloat_InitTypes(PyInterpreterState *interp)
{
+ if (!_Py_IsMainInterpreter(interp)) {
+ return _PyStatus_OK();
+ }
+
+ if (PyType_Ready(&PyFloat_Type) < 0) {
+ return _PyStatus_ERR("Can't initialize float type");
+ }
+
/* Init float info */
if (FloatInfoType.tp_name == NULL) {
if (PyStructSequence_InitType2(&FloatInfoType, &floatinfo_desc) < 0) {
- return -1;
+ return _PyStatus_ERR("can't init float info type");
}
}
- return 0;
+
+ return _PyStatus_OK();
}
void