mirror of
https://github.com/python/cpython.git
synced 2026-02-14 03:10:44 +00:00
- Fix segfault with invalid coding.
- SF Bug #772896, unknown encoding results in MemoryError, which is not helpful I will only backport the segfault fix. I'll let Anthony decide if he wants the other changes backported. I will do the backport if asked.
This commit is contained in:
parent
d45014b236
commit
40d3781416
7 changed files with 39 additions and 3 deletions
|
|
@ -42,7 +42,7 @@ PyParser_ParseStringFlagsFilename(const char *s, const char *filename,
|
|||
initerr(err_ret, filename);
|
||||
|
||||
if ((tok = PyTokenizer_FromString(s)) == NULL) {
|
||||
err_ret->error = E_NOMEM;
|
||||
err_ret->error = PyErr_Occurred() ? E_DECODE : E_NOMEM;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -116,6 +116,13 @@ getgrammar(char *filename)
|
|||
return g;
|
||||
}
|
||||
|
||||
/* Can't happen in pgen */
|
||||
PyObject*
|
||||
PyErr_Occurred()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
Py_FatalError(const char *msg)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -603,8 +603,11 @@ decode_str(const char *str, struct tok_state *tok)
|
|||
if (tok->enc != NULL) {
|
||||
assert(utf8 == NULL);
|
||||
utf8 = translate_into_utf8(str, tok->enc);
|
||||
if (utf8 == NULL)
|
||||
if (utf8 == NULL) {
|
||||
PyErr_Format(PyExc_SyntaxError,
|
||||
"unknown encoding: %s", tok->enc);
|
||||
return NULL;
|
||||
}
|
||||
str = PyString_AsString(utf8);
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue