- 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:
Neal Norwitz 2005-10-02 01:48:49 +00:00
parent d45014b236
commit 40d3781416
7 changed files with 39 additions and 3 deletions

View file

@ -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;
}

View file

@ -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)
{

View file

@ -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