[Python-checkins] r42693 - python/trunk/Parser/tokenizer.c

martin.v.loewis python-checkins at python.org
Tue Feb 28 23:41:32 CET 2006


Author: martin.v.loewis
Date: Tue Feb 28 23:41:29 2006
New Revision: 42693

Modified:
   python/trunk/Parser/tokenizer.c
Log:
Change non-ASCII warning into a SyntaxError.


Modified: python/trunk/Parser/tokenizer.c
==============================================================================
--- python/trunk/Parser/tokenizer.c	(original)
+++ python/trunk/Parser/tokenizer.c	Tue Feb 28 23:41:29 2006
@@ -127,7 +127,6 @@
 	tok->decoding_state = 0;
 	tok->decoding_erred = 0;
 	tok->read_coding_spec = 0;
-	tok->issued_encoding_warning = 0;
 	tok->encoding = NULL;
         tok->cont_line = 0;
 #ifndef PGEN
@@ -462,7 +461,7 @@
 decoding_fgets(char *s, int size, struct tok_state *tok)
 {
 	char *line = NULL;
-	int warn = 0, badchar = 0;
+	int badchar = 0;
 	for (;;) {
 		if (tok->decoding_state < 0) {
 			/* We already have a codec associated with
@@ -473,7 +472,6 @@
 			/* We want a 'raw' read. */
 			line = Py_UniversalNewlineFgets(s, size, 
 							tok->fp, NULL);
-			warn = 1;
 			break;
 		} else {
 			/* We have not yet determined the encoding.
@@ -490,7 +488,9 @@
 		}
 	}
 #ifndef PGEN
-	if (warn && line && !tok->issued_encoding_warning && !tok->encoding) {
+	/* The default encoding is ASCII, so make sure we don't have any
+           non-ASCII bytes in it. */
+	if (line && !tok->encoding) {
 		unsigned char *c;
 		for (c = (unsigned char *)line; *c; c++)
 			if (*c > 127) {
@@ -508,12 +508,8 @@
 			"but no encoding declared; "
 			"see http://www.python.org/peps/pep-0263.html for details", 
 			badchar, tok->filename, tok->lineno + 1);
-		/* We don't use PyErr_WarnExplicit() here because
-		   printing the line in question to e.g. a log file
-		   could result in sensitive information being
-		   exposed. */
-		PyErr_Warn(PyExc_DeprecationWarning, buf);
-		tok->issued_encoding_warning = 1;
+		PyErr_SetString(PyExc_SyntaxError, buf);
+		return error_ret(tok);
 	}
 #endif
 	return line;


More information about the Python-checkins mailing list