[pypy-commit] pypy unicode-utf8-py3: return bo (byteorder) from helpers
mattip
pypy.commits at gmail.com
Thu Aug 30 10:52:36 EDT 2018
Author: Matti Picus <matti.picus at 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],
More information about the pypy-commit
mailing list