[pypy-commit] pypy default: test and fix for issue807
antocuni
noreply at buildbot.pypy.org
Wed Jul 27 13:24:26 CEST 2011
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch:
Changeset: r46012:e6043c6b9090
Date: 2011-07-27 13:12 +0200
http://bitbucket.org/pypy/pypy/changeset/e6043c6b9090/
Log: test and fix for issue807
diff --git a/lib-python/modified-2.7/ctypes/__init__.py b/lib-python/modified-2.7/ctypes/__init__.py
--- a/lib-python/modified-2.7/ctypes/__init__.py
+++ b/lib-python/modified-2.7/ctypes/__init__.py
@@ -490,6 +490,10 @@
return CFunctionType
def cast(obj, typ):
+ try:
+ c_void_p.from_param(obj)
+ except TypeError, e:
+ raise ArgumentError(str(e))
return _cast_addr(obj, obj, typ)
_string_at = PYFUNCTYPE(py_object, c_void_p, c_int)(_string_at_addr)
diff --git a/pypy/module/test_lib_pypy/ctypes_tests/test_cast.py b/pypy/module/test_lib_pypy/ctypes_tests/test_cast.py
--- a/pypy/module/test_lib_pypy/ctypes_tests/test_cast.py
+++ b/pypy/module/test_lib_pypy/ctypes_tests/test_cast.py
@@ -90,3 +90,8 @@
assert sqrt._objects is my_sqrt._objects # on CPython too
my_sqrt._objects.clear()
my_sqrt._objects.update(saved_objects)
+
+ def test_cast_argumenterror(self):
+ param = c_uint(42)
+ py.test.raises(ArgumentError, "cast(param, c_void_p)")
+
More information about the pypy-commit
mailing list