diff options
author | Miss Skeleton (bot) <31488909+miss-islington@users.noreply.github.com> | 2020-10-18 06:16:52 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-18 06:16:52 (GMT) |
commit | 400175ad91c1aa8abc6dfce108446e4210d0c157 (patch) | |
tree | 2f9c7d1d95cff1abba04f5b2aa9f76d9edceda99 | |
parent | 8f7eab788aedcf1a23ef9be767e1b3502a6bbd5c (diff) | |
download | cpython-400175ad91c1aa8abc6dfce108446e4210d0c157.zip cpython-400175ad91c1aa8abc6dfce108446e4210d0c157.tar.gz cpython-400175ad91c1aa8abc6dfce108446e4210d0c157.tar.bz2 |
bpo-42065: Fix incorrectly formatted _codecs.charmap_decode error message (GH-19940)
(cherry picked from commit 3635388f52b42e5280229104747962117104c453)
Co-authored-by: Max Bernstein <tekknolagi@users.noreply.github.com>
-rw-r--r-- | Lib/test/test_codecs.py | 12 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2020-10-17-23-17-18.bpo-42065.85BsRA.rst | 3 | ||||
-rw-r--r-- | Objects/unicodeobject.c | 2 |
3 files changed, 16 insertions, 1 deletions
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index 0fd258c..d1faf01 100644 --- a/Lib/test/test_codecs.py +++ b/Lib/test/test_codecs.py @@ -2183,6 +2183,18 @@ class CharmapTest(unittest.TestCase): ("", len(allbytes)) ) + self.assertRaisesRegex(TypeError, + "character mapping must be in range\\(0x110000\\)", + codecs.charmap_decode, + b"\x00\x01\x02", "strict", {0: "A", 1: 'Bb', 2: -2} + ) + + self.assertRaisesRegex(TypeError, + "character mapping must be in range\\(0x110000\\)", + codecs.charmap_decode, + b"\x00\x01\x02", "strict", {0: "A", 1: 'Bb', 2: 999999999} + ) + def test_decode_with_int2int_map(self): a = ord('a') b = ord('b') diff --git a/Misc/NEWS.d/next/Library/2020-10-17-23-17-18.bpo-42065.85BsRA.rst b/Misc/NEWS.d/next/Library/2020-10-17-23-17-18.bpo-42065.85BsRA.rst new file mode 100644 index 0000000..83c86c0 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-17-23-17-18.bpo-42065.85BsRA.rst @@ -0,0 +1,3 @@ +Fix an incorrectly formatted error from :meth:`_codecs.charmap_decode` when +called with a mapped value outside the range of valid Unicode code points. +PR by Max Bernstein. diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 01df54d..a038e0d 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -7998,7 +7998,7 @@ charmap_decode_mapping(const char *s, goto Undefined; if (value < 0 || value > MAX_UNICODE) { PyErr_Format(PyExc_TypeError, - "character mapping must be in range(0x%lx)", + "character mapping must be in range(0x%x)", (unsigned long)MAX_UNICODE + 1); goto onError; } |