Author: Brian Kearns <bdkea...@gmail.com> Branch: Changeset: r70977:629da2d06746 Date: 2014-04-25 13:15 -0400 http://bitbucket.org/pypy/pypy/changeset/629da2d06746/
Log: unicode_internal_decode accepts readbuf diff --git a/pypy/module/_codecs/interp_codecs.py b/pypy/module/_codecs/interp_codecs.py --- a/pypy/module/_codecs/interp_codecs.py +++ b/pypy/module/_codecs/interp_codecs.py @@ -679,7 +679,7 @@ if space.isinstance_w(w_string, space.w_unicode): return space.newtuple([w_string, space.len(w_string)]) - string = space.str_w(w_string) + string = space.readbuf_w(w_string).as_str() if len(string) == 0: return space.newtuple([space.wrap(u''), space.wrap(0)]) diff --git a/pypy/module/_codecs/test/test_codecs.py b/pypy/module/_codecs/test/test_codecs.py --- a/pypy/module/_codecs/test/test_codecs.py +++ b/pypy/module/_codecs/test/test_codecs.py @@ -276,7 +276,7 @@ assert enc == "a\x00\x00\x00" def test_unicode_internal_decode(self): - import sys + import sys, _codecs, array if sys.maxunicode == 65535: # UCS2 build if sys.byteorder == "big": bytes = "\x00a" @@ -291,6 +291,9 @@ bytes2 = "\x98\x00\x01\x00" assert bytes2.decode("unicode_internal") == u"\U00010098" assert bytes.decode("unicode_internal") == u"a" + assert _codecs.unicode_internal_decode(array.array('c', bytes))[0] == u"a" + exc = raises(TypeError, _codecs.unicode_internal_decode, memoryview(bytes)) + assert str(exc.value) == "expected a readable buffer object" def test_raw_unicode_escape(self): assert unicode("\u0663", "raw-unicode-escape") == u"\u0663" _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit