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