summaryrefslogtreecommitdiff
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2010-03-12 14:45:56 +0000
committerVictor Stinner <victor.stinner@haypocalc.com>2010-03-12 14:45:56 +0000
commit4211cfd22a40b91fc7e2d12e10835bd02f99ae39 (patch)
treeb68217d692b97b6f97ca4e9eef839446d0085fe9 /Python
parent3f175e6231df6aca5c573559e8d24055e745e0ba (diff)
downloadcpython-4211cfd22a40b91fc7e2d12e10835bd02f99ae39.tar.gz
Merged revisions 78826 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. ........
Diffstat (limited to 'Python')
-rw-r--r--Python/import.c2
-rw-r--r--Python/pythonrun.c25
2 files changed, 9 insertions, 18 deletions
diff --git a/Python/import.c b/Python/import.c
index 4785bca881..8a948b98f8 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2774,8 +2774,6 @@ PyImport_Import(PyObject *module_name)
}
else {
/* No globals -- use standard builtins, and fake globals */
- PyErr_Clear();
-
builtins = PyImport_ImportModuleLevel("builtins",
NULL, NULL, NULL, 0);
if (builtins == NULL)
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index b99a541d54..cfa19b0708 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -296,13 +296,14 @@ Py_InitializeEx(int install_sigs)
if (initstdio() < 0)
Py_FatalError(
"Py_Initialize: can't initialize sys standard streams");
- 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 */
}
void
@@ -711,22 +712,12 @@ initmain(void)
static void
initsite(void)
{
- PyObject *m, *f;
+ PyObject *m;
m = PyImport_ImportModule("site");
if (m == NULL) {
- f = PySys_GetObject("stderr");
- if (f == NULL || f == Py_None)
- return;
- if (Py_VerboseFlag) {
- PyFile_WriteString(
- "'import site' failed; traceback:\n", f);
- PyErr_Print();
- }
- else {
- PyFile_WriteString(
- "'import site' failed; use -v for traceback\n", f);
- PyErr_Clear();
- }
+ PyErr_Print();
+ Py_Finalize();
+ exit(1);
}
else {
Py_DECREF(m);
@@ -1907,6 +1898,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)