mirror of https://github.com/python/cpython
The previous change was causing a segfault after multiple calls to Py_Initialize() and Py_Finalize().
This commit is contained in:
parent
0d9244332b
commit
796fc31585
|
@ -66,7 +66,7 @@ PyFloat_GetMin(void)
|
||||||
return DBL_MIN;
|
return DBL_MIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyTypeObject FloatInfoType = {0};
|
static PyTypeObject FloatInfoType = {0, 0, 0, 0, 0, 0};
|
||||||
|
|
||||||
PyDoc_STRVAR(floatinfo__doc__,
|
PyDoc_STRVAR(floatinfo__doc__,
|
||||||
"sys.floatinfo\n\
|
"sys.floatinfo\n\
|
||||||
|
@ -105,15 +105,9 @@ static PyStructSequence_Desc floatinfo_desc = {
|
||||||
PyObject *
|
PyObject *
|
||||||
PyFloat_GetInfo(void)
|
PyFloat_GetInfo(void)
|
||||||
{
|
{
|
||||||
static PyObject* floatinfo;
|
PyObject* floatinfo;
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
|
|
||||||
if (floatinfo != NULL) {
|
|
||||||
Py_INCREF(floatinfo);
|
|
||||||
return floatinfo;
|
|
||||||
}
|
|
||||||
PyStructSequence_InitType(&FloatInfoType, &floatinfo_desc);
|
|
||||||
|
|
||||||
floatinfo = PyStructSequence_New(&FloatInfoType);
|
floatinfo = PyStructSequence_New(&FloatInfoType);
|
||||||
if (floatinfo == NULL) {
|
if (floatinfo == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -142,7 +136,6 @@ PyFloat_GetInfo(void)
|
||||||
Py_CLEAR(floatinfo);
|
Py_CLEAR(floatinfo);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return floatinfo;
|
return floatinfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1669,6 +1662,9 @@ _PyFloat_Init(void)
|
||||||
/* Initialize floating point repr */
|
/* Initialize floating point repr */
|
||||||
_PyFloat_DigitsInit();
|
_PyFloat_DigitsInit();
|
||||||
#endif
|
#endif
|
||||||
|
/* Init float info */
|
||||||
|
if (FloatInfoType.tp_name == 0)
|
||||||
|
PyStructSequence_InitType(&FloatInfoType, &floatinfo_desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -1107,7 +1107,7 @@ PyDoc_STRVAR(flags__doc__,
|
||||||
\n\
|
\n\
|
||||||
Flags provided through command line arguments or environment vars.");
|
Flags provided through command line arguments or environment vars.");
|
||||||
|
|
||||||
static PyTypeObject FlagsType;
|
static PyTypeObject FlagsType = {0, 0, 0, 0, 0, 0};
|
||||||
|
|
||||||
static PyStructSequence_Field flags_fields[] = {
|
static PyStructSequence_Field flags_fields[] = {
|
||||||
{"debug", "-d"},
|
{"debug", "-d"},
|
||||||
|
@ -1180,7 +1180,6 @@ make_flags(void)
|
||||||
if (PyErr_Occurred()) {
|
if (PyErr_Occurred()) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return seq;
|
return seq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1346,7 +1345,8 @@ _PySys_Init(void)
|
||||||
PyDict_SetItemString(sysdict, "warnoptions", warnoptions);
|
PyDict_SetItemString(sysdict, "warnoptions", warnoptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
PyStructSequence_InitType(&FlagsType, &flags_desc);
|
if (FlagsType.tp_name == 0)
|
||||||
|
PyStructSequence_InitType(&FlagsType, &flags_desc);
|
||||||
SET_SYS_FROM_STRING("flags", make_flags());
|
SET_SYS_FROM_STRING("flags", make_flags());
|
||||||
/* prevent user from creating new instances */
|
/* prevent user from creating new instances */
|
||||||
FlagsType.tp_init = NULL;
|
FlagsType.tp_init = NULL;
|
||||||
|
|
Loading…
Reference in New Issue