Author: Armin Rigo <[email protected]>
Branch:
Changeset: r86859:1f8c8d955c04
Date: 2016-09-04 13:47 +0200
http://bitbucket.org/pypy/pypy/changeset/1f8c8d955c04/
Log: These specialize.arg() are not valid, because callers inside
runicode may not give a constant at all. See updated test.
diff --git a/rpython/rlib/runicode.py b/rpython/rlib/runicode.py
--- a/rpython/rlib/runicode.py
+++ b/rpython/rlib/runicode.py
@@ -145,7 +145,6 @@
_invalid_byte_3_of_4 = _invalid_cont_byte
_invalid_byte_4_of_4 = _invalid_cont_byte
[email protected](2)
def _invalid_byte_2_of_3(ordch1, ordch2, allow_surrogates):
return (ordch2>>6 != 0x2 or # 0b10
(ordch1 == 0xe0 and ordch2 < 0xa0)
@@ -157,7 +156,6 @@
(ordch1 == 0xf0 and ordch2 < 0x90) or
(ordch1 == 0xf4 and ordch2 > 0x8f))
[email protected](5)
def str_decode_utf_8_impl(s, size, errors, final, errorhandler,
allow_surrogates, result):
if size == 0:
diff --git a/rpython/rlib/test/test_runicode.py
b/rpython/rlib/test/test_runicode.py
--- a/rpython/rlib/test/test_runicode.py
+++ b/rpython/rlib/test/test_runicode.py
@@ -823,9 +823,15 @@
def f(x):
s1 = "".join(["\xd7\x90\xd6\x96\xeb\x96\x95\xf0\x90\x91\x93"] * x)
- u, consumed = runicode.str_decode_utf_8(s1, len(s1), True)
- s2 = runicode.unicode_encode_utf_8(u, len(u), True)
- return s1 == s2
+ u, consumed = runicode.str_decode_utf_8(s1, len(s1), 'strict',
+ allow_surrogates=True)
+ s2 = runicode.unicode_encode_utf_8(u, len(u), 'strict',
+ allow_surrogates=True)
+ u3, consumed3 = runicode.str_decode_utf_8(s1, len(s1), 'strict',
+ allow_surrogates=False)
+ s3 = runicode.unicode_encode_utf_8(u3, len(u3), 'strict',
+ allow_surrogates=False)
+ return s1 == s2 == s3
res = interpret(f, [2])
assert res
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit