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

Reply via email to