summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2010-03-21 21:48:45 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2010-03-21 21:48:45 (GMT)
commitffbc2f63e1ae5356e03f8b0cbf606616c311862e (patch)
tree21b807e7e152d929cfb8edba5440ccbaa686eb78 /Python
parentb531bfba4e46a6295dce7529af7e454520683487 (diff)
downloadcpython-ffbc2f63e1ae5356e03f8b0cbf606616c311862e.zip
cpython-ffbc2f63e1ae5356e03f8b0cbf606616c311862e.tar.gz
cpython-ffbc2f63e1ae5356e03f8b0cbf606616c311862e.tar.bz2
Merged revisions 78872 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r78872 | victor.stinner | 2010-03-12 15:45:56 +0100 (ven., 12 mars 2010) | 12 lines 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 5da4c51..159a45b 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2777,8 +2777,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 3764740..f4f8766 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)