diff Objects/unicodeobject.c @ 15706:bf9bb0e3dd34 legacy-trunk

This patch changes the default behaviour of the builtin charmap codec to not apply Latin-1 mappings for keys which are not found in the mapping dictionaries, but instead treat them as undefined mappings. The patch was originally written by Martin v. Loewis with some additional (cosmetic) changes and an updated test script by Marc-Andre Lemburg. The standard codecs were recreated from the most current files available at the Unicode.org site using the Tools/scripts/gencodec.py tool. This patch closes the bugs #116285 and #119960.
author Marc-André Lemburg <mal@egenix.com>
date Wed, 03 Jan 2001 21:29:14 +0000
parents 552db8d83acd
children 77c761cd1272
line wrap: on
line diff
--- a/Objects/unicodeobject.c	Wed Jan 03 16:44:56 2001 +0000
+++ b/Objects/unicodeobject.c	Wed Jan 03 21:29:14 2001 +0000
@@ -1970,11 +1970,11 @@
 	Py_DECREF(w);
 	if (x == NULL) {
 	    if (PyErr_ExceptionMatches(PyExc_LookupError)) {
-		/* No mapping found: default to Latin-1 mapping */
+		/* No mapping found means: mapping is undefined. */
 		PyErr_Clear();
-		*p++ = (Py_UNICODE)ch;
-		continue;
-	    }
+		x = Py_None;
+		Py_INCREF(x);
+	    } else
 	    goto onError;
 	}
 
@@ -2086,16 +2086,11 @@
 	Py_DECREF(w);
 	if (x == NULL) {
 	    if (PyErr_ExceptionMatches(PyExc_LookupError)) {
-		/* No mapping found: default to Latin-1 mapping if possible */
+		/* No mapping found means: mapping is undefined. */
 		PyErr_Clear();
-		if (ch < 256) {
-		    *s++ = (char)ch;
-		    continue;
-		}
-		else if (!charmap_encoding_error(&p, &s, errors,
-				     "missing character mapping"))
-		    continue;
-	    }
+		x = Py_None;
+		Py_INCREF(x);
+	    } else
 	    goto onError;
 	}