[pypy-commit] pypy py3.5: fix merge, PyUnicode_FromEncodedObject already tested in test_decode

mattip pypy.commits at gmail.com
Mon Nov 12 16:46:57 EST 2018


Author: Matti Picus <matti.picus at gmail.com>
Branch: py3.5
Changeset: r95303:861c793cead8
Date: 2018-11-12 13:39 -0800
http://bitbucket.org/pypy/pypy/changeset/861c793cead8/

Log:	fix merge, PyUnicode_FromEncodedObject already tested in test_decode

diff --git a/pypy/module/cpyext/test/test_unicodeobject.py b/pypy/module/cpyext/test/test_unicodeobject.py
--- a/pypy/module/cpyext/test/test_unicodeobject.py
+++ b/pypy/module/cpyext/test/test_unicodeobject.py
@@ -684,8 +684,6 @@
         with raises_w(space, TypeError):
             PyUnicode_FromEncodedObject(
                 space, space.wrap(u_text), null_charp, None)
-        assert space.unicode_w(PyUnicode_FromEncodedObject(
-            space, space.wrap(s_text), null_charp, None)) == u_text
         rffi.free_charp(b_text)
 
     def test_mbcs(self, space):
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
@@ -490,11 +490,12 @@
                              encoding, errors)
 
 def _pyunicode_decode(space, s, encoding, errors):
-    if not encoding:
-        # This tracks CPython 2.7, in CPython 3.4 'utf-8' is hardcoded instead
-        encoding = PyUnicode_GetDefaultEncoding(space)
+    if encoding:
+        w_encoding = space.newtext(rffi.charp2str(encoding))
+    else:
+        # python 3.4 changed to this from defaultencoding
+        w_encoding = space.newtext('utf-8')
     w_str = space.newbytes(s)
-    w_encoding = space.newtext(rffi.charp2str(encoding))
     if errors:
         w_errors = space.newtext(rffi.charp2str(errors))
     else:
@@ -530,10 +531,10 @@
     All other objects, including Unicode objects, cause a TypeError to be
     set."""
     if space.isinstance_w(w_obj, space.w_unicode):
-        raise oefmt(space.w_TypeError, "decoding Unicode is not supported")
+        raise oefmt(space.w_TypeError, "decoding str is not supported")
     if space.isinstance_w(w_obj, space.w_bytearray):   # Python 2.x specific
         raise oefmt(space.w_TypeError, "decoding bytearray is not supported")
-    s = space.bufferstr_w(w_obj)
+    s = space.bytes_w(w_obj)
     return _pyunicode_decode(space, s, encoding, errors)
 
 


More information about the pypy-commit mailing list