Author: Matti Picus <matti.pi...@gmail.com> Branch: unicode-utf8-py3 Changeset: r95046:509a8b3b1a70 Date: 2018-08-29 14:56 +0200 http://bitbucket.org/pypy/pypy/changeset/509a8b3b1a70/
Log: return bo (byteorder) from helpers diff --git a/pypy/interpreter/unicodehelper.py b/pypy/interpreter/unicodehelper.py --- a/pypy/interpreter/unicodehelper.py +++ b/pypy/interpreter/unicodehelper.py @@ -1023,15 +1023,15 @@ def str_decode_utf_16(s, errors, final=True, errorhandler=None): - return str_decode_utf_16_helper(s, errors, final, errorhandler, "native") + return str_decode_utf_16_helper(s, errors, final, errorhandler, "native")[:3] def str_decode_utf_16_be(s, errors, final=True, errorhandler=None): - return str_decode_utf_16_helper(s, errors, final, errorhandler, "big") + return str_decode_utf_16_helper(s, errors, final, errorhandler, "big")[:3] def str_decode_utf_16_le(s, errors, final=True, errorhandler=None): - return str_decode_utf_16_helper(s, errors, final, errorhandler, "little") + return str_decode_utf_16_helper(s, errors, final, errorhandler, "little")[:3] def str_decode_utf_16_helper(s, errors, final=True, errorhandler=None, @@ -1074,7 +1074,7 @@ else: bo = 1 if size == 0: - return '', 0, 0 + return '', 0, 0, bo if bo == -1: # force little endian ihi = 1 @@ -1134,7 +1134,7 @@ result.append(r) r = result.build() lgt = rutf8.check_utf8(r, True) - return result.build(), lgt, pos + return result.build(), lgt, pos, bo def _STORECHAR(result, CH, byteorder): hi = chr(((CH) >> 8) & 0xff) @@ -1244,19 +1244,19 @@ errorhandler=None): return str_decode_utf_32_helper( s, errors, final, errorhandler, "native", 'utf-32-' + BYTEORDER2, - allow_surrogates=False) + allow_surrogates=False)[:3] def str_decode_utf_32_be(s, errors, final=True, errorhandler=None): return str_decode_utf_32_helper( s, errors, final, errorhandler, "big", 'utf-32-be', - allow_surrogates=False) + allow_surrogates=False)[:3] def str_decode_utf_32_le(s, errors, final=True, errorhandler=None): return str_decode_utf_32_helper( s, errors, final, errorhandler, "little", 'utf-32-le', - allow_surrogates=False) + allow_surrogates=False)[:3] BOM32_DIRECT = intmask(0x0000FEFF) BOM32_REVERSE = intmask(0xFFFE0000) @@ -1304,7 +1304,7 @@ else: bo = 1 if size == 0: - return '', 0, 0 + return '', 0, 0, bo if bo == -1: # force little endian iorder = [0, 1, 2, 3] @@ -1346,7 +1346,7 @@ pos += 4 r = result.build() lgt = rutf8.check_utf8(r, True) - return r, lgt, pos + return r, lgt, pos, bo def _STORECHAR32(result, CH, byteorder): c0 = chr(((CH) >> 24) & 0xff) 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 @@ -929,11 +929,11 @@ assert _codecs.utf_16_be_decode(b) == (u'', 0) assert _codecs.utf_16_decode(b) == (u'', 0) assert _codecs.utf_16_le_decode(b) == (u'', 0) - assert _codecs.utf_16_ex_decode(b) == (u'', 0) + assert _codecs.utf_16_ex_decode(b) == (u'', 0, 0) assert _codecs.utf_32_decode(b) == (u'', 0) assert _codecs.utf_32_be_decode(b) == (u'', 0) assert _codecs.utf_32_le_decode(b) == (u'', 0) - assert _codecs.utf_32_ex_decode(b) == (u'', 0) + assert _codecs.utf_32_ex_decode(b) == (u'', 0, 0) assert _codecs.charmap_decode(b) == (u'', 0) assert _codecs.unicode_escape_decode(b) == (u'', 0) assert _codecs.raw_unicode_escape_decode(b) == (u'', 0) diff --git a/pypy/module/cpyext/unicodeobject.py b/pypy/module/cpyext/unicodeobject.py --- a/pypy/module/cpyext/unicodeobject.py +++ b/pypy/module/cpyext/unicodeobject.py @@ -20,7 +20,6 @@ from pypy.module.cpyext.bytesobject import PyBytes_Check, PyBytes_FromObject from pypy.module._codecs.interp_codecs import ( CodecState, latin_1_decode, utf_16_decode, utf_32_decode) -from pypy.interpreter import unicodehelper from pypy.objspace.std import unicodeobject import sys @@ -820,10 +819,12 @@ else: errors = 'strict' - result, length, pos = str_decode_utf_16_helper( - string, errors, True, None, byteorder=byteorder) + state = space.fromcache(CodecState) + result, length, pos, bo = str_decode_utf_16_helper( + string, errors, True, state.decode_error_handler, + byteorder=byteorder) if pbyteorder is not None: - pbyteorder[0] = rffi.cast(rffi.INT_real, pos > 0) + pbyteorder[0] = rffi.cast(rffi.INT_real, bo) return space.newutf8(result, length) @cpython_api([CONST_STRING, Py_ssize_t, CONST_STRING, INTP_real], PyObject) @@ -872,10 +873,12 @@ else: errors = 'strict' - result, length, pos = unicodehelper.str_decode_utf_32_helper( - string, errors, True, None, byteorder=byteorder) + state = space.fromcache(CodecState) + result, length, pos, bo = str_decode_utf_32_helper( + string, errors, True, state.decode_error_handler, + byteorder=byteorder) if pbyteorder is not None: - pbyteorder[0] = rffi.cast(rffi.INT_real, pos>0) + pbyteorder[0] = rffi.cast(rffi.INT_real, bo) return space.newutf8(result, length) @cpython_api([rffi.CWCHARP, Py_ssize_t, rffi.CCHARP, CONST_STRING], _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit