Author: Matti Picus <matti.pi...@gmail.com> Branch: unicode-utf8-py3 Changeset: r95132:fa345e6d0bd7 Date: 2018-09-16 21:27 +0300 http://bitbucket.org/pypy/pypy/changeset/fa345e6d0bd7/
Log: allow surrogates=True if error is 'surrogatespass', percolate kwarg diff --git a/pypy/interpreter/unicodehelper.py b/pypy/interpreter/unicodehelper.py --- a/pypy/interpreter/unicodehelper.py +++ b/pypy/interpreter/unicodehelper.py @@ -284,7 +284,7 @@ pos = rutf8._pos_at_index(s, newindex) return result.build() -def utf8_encode_ascii(s, errors, errorhandler): +def utf8_encode_ascii(s, errors, errorhandler, allow_surrogates=False): """ Don't be confused - this is a slowpath for errors e.g. "ignore" or an obscure errorhandler """ 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 @@ -649,9 +649,13 @@ w_arg = space.convert_arg_to_w_unicode(w_arg, errors) if errors is None: errors = 'strict' + allow_surrogates = False + if errors in ('surrogatepass',): + allow_surrogates = True state = space.fromcache(CodecState) ulen = w_arg._length - result = func(w_arg._utf8, errors, state.encode_error_handler) + result = func(w_arg._utf8, errors, state.encode_error_handler, + allow_surrogates=allow_surrogates) return space.newtuple([space.newbytes(result), space.newint(ulen)]) wrap_encoder.__name__ = func.__name__ globals()[name] = wrap_encoder _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit