summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2011-07-14 04:09:30 (GMT)
committerBenjamin Peterson <benjamin@python.org>2011-07-14 04:09:30 (GMT)
commit6e18e04273877e04da0c9516d9c016e650bc72ec (patch)
tree2618e52c0b0eb6dda008af2af2dbf91ca5f2cb42
parent58e3350bd48d59c273e320c408f2546e6d09146e (diff)
downloadcpython-6e18e04273877e04da0c9516d9c016e650bc72ec.zip
cpython-6e18e04273877e04da0c9516d9c016e650bc72ec.tar.gz
cpython-6e18e04273877e04da0c9516d9c016e650bc72ec.tar.bz2
carefully cleanup pointer cache after creating struct pointers
-rw-r--r--Lib/ctypes/test/test_byteswap.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/Lib/ctypes/test/test_byteswap.py b/Lib/ctypes/test/test_byteswap.py
index 3366ba6..0d2974f 100644
--- a/Lib/ctypes/test/test_byteswap.py
+++ b/Lib/ctypes/test/test_byteswap.py
@@ -1,4 +1,4 @@
-import sys, unittest, struct, math
+import sys, unittest, struct, math, ctypes
from binascii import hexlify
from ctypes import *
@@ -188,16 +188,6 @@ class Test(unittest.TestCase):
# nested structures with different byteorders
# create nested structures with given byteorders and set memory to data
- def set_structures(endianness, nested_endianness, data):
- class NestedStructure(nested_endianness):
- _fields_ = [("x", c_uint32),
- ("y", c_uint32)]
-
- class TestStructure(endianness):
- _fields_ = [("point", NestedStructure)]
-
- self.assertEqual(len(data), sizeof(TestStructure))
- return cast(data, POINTER(TestStructure))[0]
for nested, data in (
(BigEndianStructure, b'\0\0\0\1\0\0\0\2'),
@@ -208,7 +198,17 @@ class Test(unittest.TestCase):
LittleEndianStructure,
Structure,
):
- s = set_structures(parent, nested, data)
+ class NestedStructure(nested):
+ _fields_ = [("x", c_uint32),
+ ("y", c_uint32)]
+
+ class TestStructure(parent):
+ _fields_ = [("point", NestedStructure)]
+
+ self.assertEqual(len(data), sizeof(TestStructure))
+ ptr = POINTER(TestStructure)
+ s = cast(data, ptr)[0]
+ del ctypes._pointer_type_cache[TestStructure]
self.assertEqual(s.point.x, 1)
self.assertEqual(s.point.y, 2)