Author: Armin Rigo <ar...@tunes.org> Branch: py3.5 Changeset: r90593:4ceaad7f1e7d Date: 2017-03-08 15:39 +0100 http://bitbucket.org/pypy/pypy/changeset/4ceaad7f1e7d/
Log: fix an issue in ctypes diff --git a/lib_pypy/_ctypes/array.py b/lib_pypy/_ctypes/array.py --- a/lib_pypy/_ctypes/array.py +++ b/lib_pypy/_ctypes/array.py @@ -94,14 +94,21 @@ # array accepts very strange parameters as part of structure # or function argument... from ctypes import c_char, c_wchar - if issubclass(self._type_, (c_char, c_wchar)): - # XXX: this should maybe be stricer for py3 (c_char disallowing str?) - if isinstance(value, (bytes, str)): + if issubclass(self._type_, c_char): + if isinstance(value, bytes): if len(value) > self._length_: raise ValueError("Invalid length") value = self(*value) elif not isinstance(value, self): - raise TypeError("expected string, %s found" + raise TypeError("expected bytes, %s found" + % (value.__class__.__name__,)) + elif issubclass(self._type_, c_wchar): + if isinstance(value, str): + if len(value) > self._length_: + raise ValueError("Invalid length") + value = self(*value) + elif not isinstance(value, self): + raise TypeError("expected unicode string, %s found" % (value.__class__.__name__,)) else: if isinstance(value, tuple): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit