summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2010-03-21 14:02:32 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2010-03-21 14:02:32 (GMT)
commitea1642910eafe86b6749af852ce5b37525b742c8 (patch)
tree6e4864db8270944ed8e1ff7c9ca99ec41dd3aa6c /Python
parent57d43b29f39d8ac59d0129355f6d3663a35e254a (diff)
downloadcpython-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.c2
-rw-r--r--Python/pythonrun.c16
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)