summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2010-05-19 20:40:50 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2010-05-19 20:40:50 (GMT)
commit7d79b8b7714b5e7d8a0582a07b5625c280c879c0 (patch)
treebeb8d4f6b49623a468815c33febd040fa5301b11 /Python
parent5b08b4d230d95fe6a0b24dc45463e785a27fecd2 (diff)
downloadcpython-7d79b8b7714b5e7d8a0582a07b5625c280c879c0.zip
cpython-7d79b8b7714b5e7d8a0582a07b5625c280c879c0.tar.gz
cpython-7d79b8b7714b5e7d8a0582a07b5625c280c879c0.tar.bz2
Issue #8766: Initialize _warnings module before importing the first module.
Fix a crash if an empty directory called "encodings" exists in sys.path.
Diffstat (limited to 'Python')
-rw-r--r--Python/_warnings.c2
-rw-r--r--Python/pythonrun.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/Python/_warnings.c b/Python/_warnings.c
index c49f3f3..b1b2b71 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -116,7 +116,7 @@ get_filter(PyObject *category, PyObject *text, Py_ssize_t lineno,
_filters = warnings_filters;
}
- if (!PyList_Check(_filters)) {
+ if (_filters == NULL || !PyList_Check(_filters)) {
PyErr_SetString(PyExc_ValueError,
MODULE_NAME ".filters must be a list");
return NULL;
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 58388c2..b469c4a 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -265,13 +265,15 @@ Py_InitializeEx(int install_sigs)
_PyImportHooks_Init();
+ /* Initialize _warnings. */
+ _PyWarnings_Init();
+
initfsencoding();
if (install_sigs)
initsigs(); /* Signal handling stuff, including initintr() */
/* Initialize warnings. */
- _PyWarnings_Init();
if (PySys_HasWarnOptions()) {
PyObject *warnings_module = PyImport_ImportModule("warnings");
if (!warnings_module)