in wide builds, avoid storing high unicode characters from source code with surrogates
This is accomplished by decoding with utf-32 instead of utf-16 on all builds.
The patch is by Adam Olsen.
diff --git a/Lib/test/test_pep263.py b/Lib/test/test_pep263.py
index 05ca47f..587b2fc 100644
--- a/Lib/test/test_pep263.py
+++ b/Lib/test/test_pep263.py
@@ -36,6 +36,14 @@
exec(c, d)
self.assertEquals(d['\xc6'], '\xc6')
+ def test_issue3297(self):
+ c = compile("a, b = '\U0001010F', '\\U0001010F'", "dummy", "exec")
+ d = {}
+ exec(c, d)
+ self.assertEqual(d['a'], d['b'])
+ self.assertEqual(len(d['a']), len(d['b']))
+ self.assertEqual(ascii(d['a']), ascii(d['b']))
+
def test_main():
support.run_unittest(PEP263Test)