mirror of
https://github.com/python/cpython.git
synced 2025-07-29 22:24:49 +00:00
Handle allocation failures gracefully. Found with failmalloc.
Many (all?) of these could be backported.
This commit is contained in:
parent
1adbb50701
commit
e1fdb32ff2
6 changed files with 52 additions and 41 deletions
|
@ -1137,41 +1137,38 @@ _PySys_Init(void)
|
|||
#elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_FINAL
|
||||
s = "final";
|
||||
#endif
|
||||
PyDict_SetItemString(sysdict, "version_info",
|
||||
v = Py_BuildValue("iiisi", PY_MAJOR_VERSION,
|
||||
|
||||
#define SET_SYS_FROM_STRING(key, value) \
|
||||
v = value; \
|
||||
if (v != NULL) \
|
||||
PyDict_SetItemString(sysdict, key, v); \
|
||||
Py_XDECREF(v)
|
||||
|
||||
SET_SYS_FROM_STRING("version_info",
|
||||
Py_BuildValue("iiisi", PY_MAJOR_VERSION,
|
||||
PY_MINOR_VERSION,
|
||||
PY_MICRO_VERSION, s,
|
||||
PY_RELEASE_SERIAL));
|
||||
Py_XDECREF(v);
|
||||
PyDict_SetItemString(sysdict, "api_version",
|
||||
v = PyInt_FromLong(PYTHON_API_VERSION));
|
||||
Py_XDECREF(v);
|
||||
PyDict_SetItemString(sysdict, "copyright",
|
||||
v = PyString_FromString(Py_GetCopyright()));
|
||||
Py_XDECREF(v);
|
||||
PyDict_SetItemString(sysdict, "platform",
|
||||
v = PyString_FromString(Py_GetPlatform()));
|
||||
Py_XDECREF(v);
|
||||
PyDict_SetItemString(sysdict, "executable",
|
||||
v = PyString_FromString(Py_GetProgramFullPath()));
|
||||
Py_XDECREF(v);
|
||||
PyDict_SetItemString(sysdict, "prefix",
|
||||
v = PyString_FromString(Py_GetPrefix()));
|
||||
Py_XDECREF(v);
|
||||
PyDict_SetItemString(sysdict, "exec_prefix",
|
||||
v = PyString_FromString(Py_GetExecPrefix()));
|
||||
Py_XDECREF(v);
|
||||
PyDict_SetItemString(sysdict, "maxint",
|
||||
v = PyInt_FromLong(PyInt_GetMax()));
|
||||
Py_XDECREF(v);
|
||||
SET_SYS_FROM_STRING("api_version",
|
||||
PyInt_FromLong(PYTHON_API_VERSION));
|
||||
SET_SYS_FROM_STRING("copyright",
|
||||
PyString_FromString(Py_GetCopyright()));
|
||||
SET_SYS_FROM_STRING("platform",
|
||||
PyString_FromString(Py_GetPlatform()));
|
||||
SET_SYS_FROM_STRING("executable",
|
||||
PyString_FromString(Py_GetProgramFullPath()));
|
||||
SET_SYS_FROM_STRING("prefix",
|
||||
PyString_FromString(Py_GetPrefix()));
|
||||
SET_SYS_FROM_STRING("exec_prefix",
|
||||
PyString_FromString(Py_GetExecPrefix()));
|
||||
SET_SYS_FROM_STRING("maxint",
|
||||
PyInt_FromLong(PyInt_GetMax()));
|
||||
#ifdef Py_USING_UNICODE
|
||||
PyDict_SetItemString(sysdict, "maxunicode",
|
||||
v = PyInt_FromLong(PyUnicode_GetMax()));
|
||||
Py_XDECREF(v);
|
||||
SET_SYS_FROM_STRING("maxunicode",
|
||||
PyInt_FromLong(PyUnicode_GetMax()));
|
||||
#endif
|
||||
PyDict_SetItemString(sysdict, "builtin_module_names",
|
||||
v = list_builtin_module_names());
|
||||
Py_XDECREF(v);
|
||||
SET_SYS_FROM_STRING("builtin_module_names",
|
||||
list_builtin_module_names());
|
||||
{
|
||||
/* Assumes that longs are at least 2 bytes long.
|
||||
Should be safe! */
|
||||
|
@ -1183,18 +1180,16 @@ _PySys_Init(void)
|
|||
value = "big";
|
||||
else
|
||||
value = "little";
|
||||
PyDict_SetItemString(sysdict, "byteorder",
|
||||
v = PyString_FromString(value));
|
||||
Py_XDECREF(v);
|
||||
SET_SYS_FROM_STRING("byteorder",
|
||||
PyString_FromString(value));
|
||||
}
|
||||
#ifdef MS_COREDLL
|
||||
PyDict_SetItemString(sysdict, "dllhandle",
|
||||
v = PyLong_FromVoidPtr(PyWin_DLLhModule));
|
||||
Py_XDECREF(v);
|
||||
PyDict_SetItemString(sysdict, "winver",
|
||||
v = PyString_FromString(PyWin_DLLVersionString));
|
||||
Py_XDECREF(v);
|
||||
SET_SYS_FROM_STRING("dllhandle",
|
||||
PyLong_FromVoidPtr(PyWin_DLLhModule));
|
||||
SET_SYS_FROM_STRING("winver",
|
||||
PyString_FromString(PyWin_DLLVersionString));
|
||||
#endif
|
||||
#undef SET_SYS_FROM_STRING
|
||||
if (warnoptions == NULL) {
|
||||
warnoptions = PyList_New(0);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue