[pypy-svn] r79974 - in pypy/trunk: lib_pypy/_ctypes pypy/module/test_lib_pypy/ctypes_tests

arigo at codespeak.net arigo at codespeak.net
Sat Dec 11 14:47:19 CET 2010


Author: arigo
Date: Sat Dec 11 14:47:17 2010
New Revision: 79974

Modified:
   pypy/trunk/lib_pypy/_ctypes/primitive.py
   pypy/trunk/pypy/module/test_lib_pypy/ctypes_tests/test_cast.py
Log:
Merge from branch/ctypes-fix:

Fix _ensure_objects() on class _SimpleCData.  Always returns
self._objects, but asserts that it is None for all _SimpleCDatas except
z, Z and P.



Modified: pypy/trunk/lib_pypy/_ctypes/primitive.py
==============================================================================
--- pypy/trunk/lib_pypy/_ctypes/primitive.py	(original)
+++ pypy/trunk/lib_pypy/_ctypes/primitive.py	Sat Dec 11 14:47:17 2010
@@ -295,9 +295,9 @@
             self.value = value
 
     def _ensure_objects(self):
-        if self._type_ in 'zZ':
-            return self._objects
-        return None
+        if self._type_ not in 'zZP':
+            assert self._objects is None
+        return self._objects
 
     def _getvalue(self):
         return self._buffer[0]

Modified: pypy/trunk/pypy/module/test_lib_pypy/ctypes_tests/test_cast.py
==============================================================================
--- pypy/trunk/pypy/module/test_lib_pypy/ctypes_tests/test_cast.py	(original)
+++ pypy/trunk/pypy/module/test_lib_pypy/ctypes_tests/test_cast.py	Sat Dec 11 14:47:17 2010
@@ -82,8 +82,11 @@
     def test_cast_functype(self):
         # make sure we can cast function type
         my_sqrt = lib.my_sqrt
+        saved_objects = my_sqrt._objects.copy()
         sqrt = cast(cast(my_sqrt, c_void_p), CFUNCTYPE(c_double, c_double))
         assert sqrt(4.0) == 2.0
         assert not cast(0, CFUNCTYPE(c_int))
-
-        
+        #
+        assert sqrt._objects is my_sqrt._objects   # on CPython too
+        my_sqrt._objects.clear()
+        my_sqrt._objects.update(saved_objects)



More information about the Pypy-commit mailing list