diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-03-21 14:02:32 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-03-21 14:02:32 (GMT) |
commit | ea1642910eafe86b6749af852ce5b37525b742c8 (patch) | |
tree | 6e4864db8270944ed8e1ff7c9ca99ec41dd3aa6c /Python | |
parent | 57d43b29f39d8ac59d0129355f6d3663a35e254a (diff) | |
download | cpython-ea1642910eafe86b6749af852ce5b37525b742c8.zip cpython-ea1642910eafe86b6749af852ce5b37525b742c8.tar.gz cpython-ea1642910eafe86b6749af852ce5b37525b742c8.tar.bz2 |
Partial backport of r78826: leave import site error handler unchanged (print
the error and continue).
Merged revisions 78826-78827 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78826 | victor.stinner | 2010-03-10 23:30:19 +0100 (mer., 10 mars 2010) | 5 lines
Issue #3137: Don't ignore errors at startup, especially a keyboard interrupt
(SIGINT). If an error occurs while importing the site module, the error is
printed and Python exits. Initialize the GIL before importing the site
module.
........
r78827 | victor.stinner | 2010-03-10 23:45:04 +0100 (mer., 10 mars 2010) | 4 lines
ooops, fix error message in execusercustomize()
Copy/paste failure :-)
........
Diffstat (limited to 'Python')
-rw-r--r-- | Python/import.c | 2 | ||||
-rw-r--r-- | Python/pythonrun.c | 16 |
2 files changed, 12 insertions, 6 deletions
diff --git a/Python/import.c b/Python/import.c index 43eabb8..eb731d0 100644 --- a/Python/import.c +++ b/Python/import.c @@ -2744,8 +2744,6 @@ PyImport_Import(PyObject *module_name) } else { /* No globals -- use standard builtins, and fake globals */ - PyErr_Clear(); - builtins = PyImport_ImportModuleLevel("__builtin__", NULL, NULL, NULL, 0); if (builtins == NULL) diff --git a/Python/pythonrun.c b/Python/pythonrun.c index f0dcfb3..3ea4d8c 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -245,14 +245,15 @@ Py_InitializeEx(int install_sigs) } initmain(); /* Module __main__ */ - if (!Py_NoSiteFlag) - initsite(); /* Module site */ /* auto-thread-state API, if available */ #ifdef WITH_THREAD _PyGILState_Init(interp, tstate); #endif /* WITH_THREAD */ + if (!Py_NoSiteFlag) + initsite(); /* Module site */ + if ((p = Py_GETENV("PYTHONIOENCODING")) && *p != '\0') { p = icodeset = codeset = strdup(p); free_codeset = 1; @@ -281,8 +282,13 @@ Py_InitializeEx(int install_sigs) loc_codeset = strdup(loc_codeset); Py_DECREF(enc); } else { - loc_codeset = NULL; - PyErr_Clear(); + if (PyErr_ExceptionMatches(PyExc_LookupError)) { + PyErr_Clear(); + loc_codeset = NULL; + } else { + PyErr_Print(); + exit(1); + } } } else loc_codeset = NULL; @@ -1543,6 +1549,8 @@ err_input(perrdetail *err) char *msg = NULL; errtype = PyExc_SyntaxError; switch (err->error) { + case E_ERROR: + return; case E_SYNTAX: errtype = PyExc_IndentationError; if (err->expected == INDENT) |