]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.12] gh-62260: Fix ctypes.Structure subclassing with multiple layers (GH-13374...
authorSerhiy Storchaka <storchaka@gmail.com>
Fri, 5 Jan 2024 22:52:41 +0000 (00:52 +0200)
committerGitHub <noreply@github.com>
Fri, 5 Jan 2024 22:52:41 +0000 (22:52 +0000)
commit6d9af666165a3a69618ee940631ca6600d2a2027
tree670225dcd2dd874795f35a48fa0ede24694be4d9
parente132751b49a720da97e969542d89258a914cfe94
[3.12] gh-62260: Fix ctypes.Structure subclassing with multiple layers (GH-13374) (GH-113623)

The length field of StgDictObject for Structure class contains now
the total number of items in ffi_type_pointer.elements (excluding
the trailing null).

The old behavior of using the number of elements in the parent class can
cause the array to be truncated when it is copied, especially when there
are multiple layers of subclassing.

(cherry picked from commit 5f3cc90a12d6df404fd6f48a0df1334902e271f2)

Co-authored-by: Jeffrey Kintscher <49998481+websurfer5@users.noreply.github.com>
Lib/test/test_ctypes/test_structures.py
Misc/NEWS.d/next/Library/2019-05-17-07-22-33.bpo-18060.5mqTQM.rst [new file with mode: 0644]
Modules/_ctypes/_ctypes.c
Modules/_ctypes/stgdict.c