Mercurial > cpython-lru_cache-weakref
diff Python/compile.c @ 37149:4d80607033fb 2.4
Change SystemError into SyntaxError, when a Unicode string
containing an encoding declaration is compile()d. Fixes
#1115379.
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Wed, 22 Mar 2006 13:55:50 +0000 |
| parents | 3350f85c889f |
| children |
line wrap: on
line diff
--- a/Python/compile.c Wed Mar 22 04:00:19 2006 +0000 +++ b/Python/compile.c Wed Mar 22 13:55:50 2006 +0000 @@ -4952,6 +4952,12 @@ return NULL; if (flags && flags->cf_flags & PyCF_SOURCE_IS_UTF8) { sc.c_encoding = "utf-8"; + if (TYPE(n) == encoding_decl) { + com_error(&sc, PyExc_SyntaxError, + "encoding declaration in Unicode string"); + co = NULL; + goto exit; + } } else if (TYPE(n) == encoding_decl) { sc.c_encoding = STR(n); n = CHILD(n, 0); @@ -5044,7 +5050,7 @@ PyErr_SetString(PyExc_SystemError, "lost syntax error"); } exit: - if (base == NULL) { + if (base == NULL && sc.c_symtable != NULL) { PySymtable_Free(sc.c_symtable); sc.c_symtable = NULL; }
