Fix for a bug found by Armin Rigo, plus test.

https://sourceforge.net/tracker/?func=detail&atid=532154&aid=1467852&group_id=71702
This commit is contained in:
Thomas Heller 2006-04-12 19:07:36 +00:00
parent 8920bf24f8
commit 55d031ef23
2 changed files with 13 additions and 1 deletions

View File

@ -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()

View File

@ -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 */