New submission from Charles Machalow: Large sized fields in Structures lead to incorrect string representations because it is assuming that because the size is so large, it must be a bit field instead of a byte field.
class bugStruct(Structure): _pack_ = 1 _fields_ = [ ("correct", c_uint8 * 65535), ("wrongSizeAndOffset", c_uint8 * 999999), ] print(str(bugStruct.correct)) <Field type=c_ubyte_Array_65535, ofs=0, size=65535> # Correct print(str(bugStruct.wrongSizeAndOffset)) <Field type=c_ubyte_Array_999999, ofs=65535:16959, bits=15> # Incorrect # Should be: <Field type=c_ubyte_Array_999999, ofs=65535, size=999999> To get the math for this do the following on an incorrect size/offset: size = (bits << 16) + ofs.split(":")[1] ofs = ofs.split(":")[0] Though this isn't really safe because the field may actually be bit-sized ---------- components: ctypes files: ctypesBug.py messages: 256359 nosy: Charles Machalow priority: normal severity: normal status: open title: Structure field size/ofs __str__ wrong with large size fields type: behavior versions: Python 2.7, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6 Added file: http://bugs.python.org/file41297/ctypesBug.py _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue25858> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com