From: Thomas Heller Date: Wed, 12 Apr 2006 19:07:36 +0000 (+0000) Subject: Fix for a bug found by Armin Rigo, plus test. X-Git-Tag: v2.5a2~297 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=55d031ef23ac8f6e7cfe823f62c9e4f627e7b431;p=python Fix for a bug found by Armin Rigo, plus test. https://sourceforge.net/tracker/?func=detail&atid=532154&aid=1467852&group_id=71702 --- diff --git a/Lib/ctypes/test/test_pointers.py b/Lib/ctypes/test/test_pointers.py index 6172abb1f6..3a324a67c3 100644 --- a/Lib/ctypes/test/test_pointers.py +++ b/Lib/ctypes/test/test_pointers.py @@ -166,6 +166,18 @@ class PointersTestCase(unittest.TestCase): result = func( byref(argc), argv ) assert result == 'world', result + def test_bug_1467852(self): + # http://sourceforge.net/tracker/?func=detail&atid=532154&aid=1467852&group_id=71702 + x = c_int(5) + dummy = [] + for i in range(32000): + dummy.append(c_int(i)) + y = c_int(6) + p = pointer(x) + pp = pointer(p) + q = pointer(y) + pp[0] = q # <== + self.failUnlessEqual(p[0], 6) if __name__ == '__main__': unittest.main() diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index bcb179ee82..d751841095 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -548,7 +548,7 @@ PointerType_new(PyTypeObject *type, PyObject *args, PyObject *kwds) return NULL; stgdict->size = sizeof(void *); stgdict->align = getentry("P")->pffi_type->alignment; - stgdict->length = 2; + stgdict->length = 1; stgdict->ffi_type = ffi_type_pointer; proto = PyDict_GetItemString(typedict, "_type_"); /* Borrowed ref */