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.
........
This commit is contained in:
Victor Stinner 2010-03-12 14:45:56 +00:00
parent 2743139031
commit 52f6dd7a3d
6 changed files with 50 additions and 32 deletions

View file

@ -1242,21 +1242,28 @@ indenterror(struct tok_state *tok)
}
#ifdef PGEN
#define verify_identifier(s,e) 1
#define verify_identifier(tok) 1
#else
/* Verify that the identifier follows PEP 3131. */
static int
verify_identifier(char *start, char *end)
verify_identifier(struct tok_state *tok)
{
PyObject *s;
int result;
s = PyUnicode_DecodeUTF8(start, end-start, NULL);
s = PyUnicode_DecodeUTF8(tok->start, tok->cur - tok->start, NULL);
if (s == NULL) {
PyErr_Clear();
if (PyErr_ExceptionMatches(PyExc_UnicodeDecodeError)) {
PyErr_Clear();
tok->done = E_IDENTIFIER;
} else {
tok->done = E_ERROR;
}
return 0;
}
result = PyUnicode_IsIdentifier(s);
Py_DECREF(s);
if (result == 0)
tok->done = E_IDENTIFIER;
return result;
}
#endif
@ -1405,7 +1412,7 @@ tok_get(register struct tok_state *tok, char **p_start, char **p_end)
}
tok_backup(tok, c);
if (nonascii &&
!verify_identifier(tok->start, tok->cur)) {
!verify_identifier(tok)) {
tok->done = E_IDENTIFIER;
return ERRORTOKEN;
}