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