summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Skeleton (bot) <31488909+miss-islington@users.noreply.github.com>2020-10-18 06:16:52 (GMT)
committerGitHub <noreply@github.com>2020-10-18 06:16:52 (GMT)
commit400175ad91c1aa8abc6dfce108446e4210d0c157 (patch)
tree2f9c7d1d95cff1abba04f5b2aa9f76d9edceda99
parent8f7eab788aedcf1a23ef9be767e1b3502a6bbd5c (diff)
downloadcpython-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.py12
-rw-r--r--Misc/NEWS.d/next/Library/2020-10-17-23-17-18.bpo-42065.85BsRA.rst3
-rw-r--r--Objects/unicodeobject.c2
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;
}