[Python-checkins] r78826 - in python/trunk: Lib/site.py Misc/NEWS Modules/main.c Parser/tokenizer.c Python/import.c Python/pythonrun.c
Brett Cannon
brett at python.org
Thu Mar 11 21:59:46 CET 2010
nm, I just saw your email to python-dev asking about this.
On Thu, Mar 11, 2010 at 12:55, Brett Cannon <brett at python.org> wrote:
> Are you planning to forward-port this to py3k, Victor?
>>> On Wed, Mar 10, 2010 at 14:30, victor.stinner <python-checkins at python.org>wrote:
>>> Author: victor.stinner
>> Date: Wed Mar 10 23:30:19 2010
>> New Revision: 78826
>>>> Log:
>> 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.
>>>>>> Modified:
>> python/trunk/Lib/site.py
>> python/trunk/Misc/NEWS
>> python/trunk/Modules/main.c
>> python/trunk/Parser/tokenizer.c
>> python/trunk/Python/import.c
>> python/trunk/Python/pythonrun.c
>>>> Modified: python/trunk/Lib/site.py
>>>> ==============================================================================
>> --- python/trunk/Lib/site.py (original)
>> +++ python/trunk/Lib/site.py Wed Mar 10 23:30:19 2010
>> @@ -489,6 +489,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():
>> @@ -497,6 +503,12 @@
>> import usercustomize
>> 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 main():
>>>> Modified: python/trunk/Misc/NEWS
>>>> ==============================================================================
>> --- python/trunk/Misc/NEWS (original)
>> +++ python/trunk/Misc/NEWS Wed Mar 10 23:30:19 2010
>> @@ -12,6 +12,11 @@
>> Core and Builtins
>> -----------------
>>>> +- 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.
>> +
>> Library
>> -------
>>>>>> Modified: python/trunk/Modules/main.c
>>>> ==============================================================================
>> --- python/trunk/Modules/main.c (original)
>> +++ python/trunk/Modules/main.c Wed Mar 10 23:30:19 2010
>> @@ -573,10 +573,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/trunk/Parser/tokenizer.c
>>>> ==============================================================================
>> --- python/trunk/Parser/tokenizer.c (original)
>> +++ python/trunk/Parser/tokenizer.c Wed Mar 10 23:30:19 2010
>> @@ -817,8 +817,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/trunk/Python/import.c
>>>> ==============================================================================
>> --- python/trunk/Python/import.c (original)
>> +++ python/trunk/Python/import.c Wed Mar 10 23:30:19 2010
>> @@ -2748,8 +2748,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/trunk/Python/pythonrun.c
>>>> ==============================================================================
>> --- python/trunk/Python/pythonrun.c (original)
>> +++ python/trunk/Python/pythonrun.c Wed Mar 10 23:30:19 2010
>> @@ -248,14 +248,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;
>> @@ -284,8 +285,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;
>> @@ -704,20 +710,12 @@
>> static void
>> initsite(void)
>> {
>> - PyObject *m, *f;
>> + PyObject *m;
>> m = PyImport_ImportModule("site");
>> if (m == NULL) {
>> - f = PySys_GetObject("stderr");
>> - 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);
>> @@ -1546,6 +1544,8 @@
>> char *msg = NULL;
>> errtype = PyExc_SyntaxError;
>> switch (err->error) {
>> + case E_ERROR:
>> + return;
>> case E_SYNTAX:
>> errtype = PyExc_IndentationError;
>> if (err->expected == INDENT)
>> _______________________________________________
>> Python-checkins mailing list
>> Python-checkins at python.org
>> http://mail.python.org/mailman/listinfo/python-checkins
>>>>-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-checkins/attachments/20100311/1699e207/attachment.html>
More information about the Python-checkins
mailing list