From 2e7ea507d66a888edc163df2e12aff6f5878c4fb Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Wed, 13 Jul 2011 23:09:30 -0500 Subject: [PATCH] carefully cleanup pointer cache after creating struct pointers --- Lib/ctypes/test/test_byteswap.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Lib/ctypes/test/test_byteswap.py b/Lib/ctypes/test/test_byteswap.py index 895c66086b4..4bd75cd3193 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)