Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r95044:6df19fd2b6df
Date: 2018-08-30 13:51 +0200
http://bitbucket.org/pypy/pypy/changeset/6df19fd2b6df/

Log:    update to cffi/960ab54c2eb4

diff --git a/pypy/module/_cffi_backend/ctypearray.py 
b/pypy/module/_cffi_backend/ctypearray.py
--- a/pypy/module/_cffi_backend/ctypearray.py
+++ b/pypy/module/_cffi_backend/ctypearray.py
@@ -104,7 +104,15 @@
         return self.ctptr
 
     def convert_from_object(self, cdata, w_ob):
-        self.convert_array_from_object(cdata, w_ob)
+        if isinstance(w_ob, cdataobj.W_CData) and w_ob.ctype is self:
+            length = w_ob.get_array_length()
+            with w_ob as source:
+                source = rffi.cast(rffi.VOIDP, source)
+                target = rffi.cast(rffi.VOIDP, cdata)
+                size = rffi.cast(rffi.SIZE_T, self.ctitem.size * length)
+                rffi.c_memcpy(target, source, size)
+        else:
+            self.convert_array_from_object(cdata, w_ob)
 
     def convert_to_object(self, cdata):
         if self.length < 0:
diff --git a/pypy/module/_cffi_backend/ctypeptr.py 
b/pypy/module/_cffi_backend/ctypeptr.py
--- a/pypy/module/_cffi_backend/ctypeptr.py
+++ b/pypy/module/_cffi_backend/ctypeptr.py
@@ -75,8 +75,7 @@
                 self._convert_array_from_listview(cdata, space.listview(w_ob))
         elif self.accept_str:
             if not space.isinstance_w(w_ob, space.w_bytes):
-                return self._convert_array_from_cdataobj(cdata, w_ob,
-                        "str or list or tuple")
+                raise self._convert_error("str or list or tuple", w_ob)
             s = space.bytes_w(w_ob)
             n = len(s)
             if self.length >= 0 and n > self.length:
@@ -91,8 +90,7 @@
         elif isinstance(self.ctitem, ctypeprim.W_CTypePrimitiveUniChar):
             from pypy.module._cffi_backend import wchar_helper
             if not space.isinstance_w(w_ob, space.w_unicode):
-                return self._convert_array_from_cdataobj(cdata, w_ob,
-                        "unicode or list or tuple")
+                raise self._convert_error("unicode or list or tuple", w_ob)
             s = space.unicode_w(w_ob)
             if self.ctitem.size == 2:
                 n = wchar_helper.unicode_size_as_char16(s)
@@ -113,19 +111,7 @@
             else:
                 wchar_helper.unicode_to_char32(s, cdata, n, add_final_zero)
         else:
-            return self._convert_array_from_cdataobj(cdata, w_ob,
-                    "list or tuple")
-
-    def _convert_array_from_cdataobj(self, cdata, w_ob, errmsg):
-        if isinstance(w_ob, cdataobj.W_CData) and w_ob.ctype is self:
-            length = w_ob.get_array_length()
-            with w_ob as source:
-                source = rffi.cast(rffi.VOIDP, source)
-                target = rffi.cast(rffi.VOIDP, cdata)
-                size = rffi.cast(rffi.SIZE_T, self.ctitem.size * length)
-                rffi.c_memcpy(target, source, size)
-        else:
-            raise self._convert_error(errmsg, w_ob)
+            raise self._convert_error("list or tuple", w_ob)
 
     def _must_be_string_of_zero_or_one(self, s):
         for c in s:
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to