[Python-checkins] r79204 - in python/branches/release26-maint: Lib/site.py Modules/main.c Parser/tokenizer.c Python/import.c Python/pythonrun.c
victor.stinner
python-checkins at python.org
Sun Mar 21 15:02:32 CET 2010
Author: victor.stinner
Date: Sun Mar 21 15:02:32 2010
New Revision: 79204
Log:
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 :-)
........
Modified:
python/branches/release26-maint/ (props changed)
python/branches/release26-maint/Lib/site.py
python/branches/release26-maint/Modules/main.c
python/branches/release26-maint/Parser/tokenizer.c
python/branches/release26-maint/Python/import.c
python/branches/release26-maint/Python/pythonrun.c
Modified: python/branches/release26-maint/Lib/site.py
==============================================================================
--- python/branches/release26-maint/Lib/site.py (original)
+++ python/branches/release26-maint/Lib/site.py Sun Mar 21 15:02:32 2010
@@ -472,6 +472,12 @@
import sitecustomize
except ImportError:
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():
@@ -480,6 +486,12 @@
import usercustomize
except ImportError:
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():
Modified: python/branches/release26-maint/Modules/main.c
==============================================================================
--- python/branches/release26-maint/Modules/main.c (original)
+++ python/branches/release26-maint/Modules/main.c Sun Mar 21 15:02:32 2010
@@ -569,10 +569,16 @@
}
if (sts==-1) {
- sts = PyRun_AnyFileExFlags(
- fp,
- filename == NULL ? "<stdin>" : filename,
- filename != NULL, &cf) != 0;
+ /* call pending calls like signal handlers (SIGINT) */
+ if (Py_MakePendingCalls() == -1) {
+ PyErr_Print();
+ sts = 1;
+ } else {
+ sts = PyRun_AnyFileExFlags(
+ fp,
+ filename == NULL ? "<stdin>" : filename,
+ filename != NULL, &cf) != 0;
+ }
}
}
Modified: python/branches/release26-maint/Parser/tokenizer.c
==============================================================================
--- python/branches/release26-maint/Parser/tokenizer.c (original)
+++ python/branches/release26-maint/Parser/tokenizer.c Sun Mar 21 15:02:32 2010
@@ -764,8 +764,12 @@
return -1;
error_clear:
- /* Fallback to iso-8859-1: for backward compatibility */
Py_DECREF(enc);
+ if (!PyErr_ExceptionMatches(PyExc_UnicodeDecodeError)) {
+ tok->done = E_ERROR;
+ return -1;
+ }
+ /* Fallback to iso-8859-1: for backward compatibility */
PyErr_Clear();
return 0;
}
Modified: python/branches/release26-maint/Python/import.c
==============================================================================
--- python/branches/release26-maint/Python/import.c (original)
+++ python/branches/release26-maint/Python/import.c Sun Mar 21 15:02:32 2010
@@ -2744,8 +2744,6 @@
}
else {
/* No globals -- use standard builtins, and fake globals */
- PyErr_Clear();
-
builtins = PyImport_ImportModuleLevel("__builtin__",
NULL, NULL, NULL, 0);
if (builtins == NULL)
Modified: python/branches/release26-maint/Python/pythonrun.c
==============================================================================
--- python/branches/release26-maint/Python/pythonrun.c (original)
+++ python/branches/release26-maint/Python/pythonrun.c Sun Mar 21 15:02:32 2010
@@ -245,14 +245,15 @@
}
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 @@
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 @@
char *msg = NULL;
errtype = PyExc_SyntaxError;
switch (err->error) {
+ case E_ERROR:
+ return;
case E_SYNTAX:
errtype = PyExc_IndentationError;
if (err->expected == INDENT)
More information about the Python-checkins
mailing list