mirror of
https://github.com/python/cpython.git
synced 2025-09-20 07:31:10 +00:00
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 :-) ........
This commit is contained in:
parent
57d43b29f3
commit
ea1642910e
5 changed files with 39 additions and 11 deletions
12
Lib/site.py
12
Lib/site.py
|
@ -472,6 +472,12 @@ def execsitecustomize():
|
||||||
import sitecustomize
|
import sitecustomize
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
except Exception:
|
||||||
|
if sys.flags.verbose:
|
||||||
|
sys.excepthook(*sys.exc_info())
|
||||||
|
else:
|
||||||
|
print >>sys.stderr, \
|
||||||
|
"'import sitecustomize' failed; use -v for traceback"
|
||||||
|
|
||||||
|
|
||||||
def execusercustomize():
|
def execusercustomize():
|
||||||
|
@ -480,6 +486,12 @@ def execusercustomize():
|
||||||
import usercustomize
|
import usercustomize
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
except Exception:
|
||||||
|
if sys.flags.verbose:
|
||||||
|
sys.excepthook(*sys.exc_info())
|
||||||
|
else:
|
||||||
|
print>>sys.stderr, \
|
||||||
|
"'import usercustomize' failed; use -v for traceback"
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
|
@ -569,11 +569,17 @@ Py_Main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sts==-1) {
|
if (sts==-1) {
|
||||||
|
/* call pending calls like signal handlers (SIGINT) */
|
||||||
|
if (Py_MakePendingCalls() == -1) {
|
||||||
|
PyErr_Print();
|
||||||
|
sts = 1;
|
||||||
|
} else {
|
||||||
sts = PyRun_AnyFileExFlags(
|
sts = PyRun_AnyFileExFlags(
|
||||||
fp,
|
fp,
|
||||||
filename == NULL ? "<stdin>" : filename,
|
filename == NULL ? "<stdin>" : filename,
|
||||||
filename != NULL, &cf) != 0;
|
filename != NULL, &cf) != 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -764,8 +764,12 @@ error_nomem:
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
error_clear:
|
error_clear:
|
||||||
/* Fallback to iso-8859-1: for backward compatibility */
|
|
||||||
Py_DECREF(enc);
|
Py_DECREF(enc);
|
||||||
|
if (!PyErr_ExceptionMatches(PyExc_UnicodeDecodeError)) {
|
||||||
|
tok->done = E_ERROR;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
/* Fallback to iso-8859-1: for backward compatibility */
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2744,8 +2744,6 @@ PyImport_Import(PyObject *module_name)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* No globals -- use standard builtins, and fake globals */
|
/* No globals -- use standard builtins, and fake globals */
|
||||||
PyErr_Clear();
|
|
||||||
|
|
||||||
builtins = PyImport_ImportModuleLevel("__builtin__",
|
builtins = PyImport_ImportModuleLevel("__builtin__",
|
||||||
NULL, NULL, NULL, 0);
|
NULL, NULL, NULL, 0);
|
||||||
if (builtins == NULL)
|
if (builtins == NULL)
|
||||||
|
|
|
@ -245,14 +245,15 @@ Py_InitializeEx(int install_sigs)
|
||||||
}
|
}
|
||||||
|
|
||||||
initmain(); /* Module __main__ */
|
initmain(); /* Module __main__ */
|
||||||
if (!Py_NoSiteFlag)
|
|
||||||
initsite(); /* Module site */
|
|
||||||
|
|
||||||
/* auto-thread-state API, if available */
|
/* auto-thread-state API, if available */
|
||||||
#ifdef WITH_THREAD
|
#ifdef WITH_THREAD
|
||||||
_PyGILState_Init(interp, tstate);
|
_PyGILState_Init(interp, tstate);
|
||||||
#endif /* WITH_THREAD */
|
#endif /* WITH_THREAD */
|
||||||
|
|
||||||
|
if (!Py_NoSiteFlag)
|
||||||
|
initsite(); /* Module site */
|
||||||
|
|
||||||
if ((p = Py_GETENV("PYTHONIOENCODING")) && *p != '\0') {
|
if ((p = Py_GETENV("PYTHONIOENCODING")) && *p != '\0') {
|
||||||
p = icodeset = codeset = strdup(p);
|
p = icodeset = codeset = strdup(p);
|
||||||
free_codeset = 1;
|
free_codeset = 1;
|
||||||
|
@ -281,8 +282,13 @@ Py_InitializeEx(int install_sigs)
|
||||||
loc_codeset = strdup(loc_codeset);
|
loc_codeset = strdup(loc_codeset);
|
||||||
Py_DECREF(enc);
|
Py_DECREF(enc);
|
||||||
} else {
|
} else {
|
||||||
loc_codeset = NULL;
|
if (PyErr_ExceptionMatches(PyExc_LookupError)) {
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
|
loc_codeset = NULL;
|
||||||
|
} else {
|
||||||
|
PyErr_Print();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
loc_codeset = NULL;
|
loc_codeset = NULL;
|
||||||
|
@ -1543,6 +1549,8 @@ err_input(perrdetail *err)
|
||||||
char *msg = NULL;
|
char *msg = NULL;
|
||||||
errtype = PyExc_SyntaxError;
|
errtype = PyExc_SyntaxError;
|
||||||
switch (err->error) {
|
switch (err->error) {
|
||||||
|
case E_ERROR:
|
||||||
|
return;
|
||||||
case E_SYNTAX:
|
case E_SYNTAX:
|
||||||
errtype = PyExc_IndentationError;
|
errtype = PyExc_IndentationError;
|
||||||
if (err->expected == INDENT)
|
if (err->expected == INDENT)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue