[New-bugs-announce] [issue6068] c_ulonglong structure members appear read-only
higstar
report at bugs.python.org
Wed May 20 11:47:11 CEST 2009
New submission from higstar <adrian at higstar.com>:
When defining a structure with members of ctype type c_ulonglong, some
members appear read only?
I created this test.py and appended the results below:
-----
import ctypes
import time
class all_ulong(ctypes.BigEndianStructure):
_fields_ = [
("Data0", ctypes.c_ulong, 4),
("Data1", ctypes.c_ulong, 4),
]
class all_ulonglong(ctypes.BigEndianStructure):
_fields_ = [
("Data0", ctypes.c_ulonglong, 4),
("Data1", ctypes.c_ulonglong, 4),
]
def inc_both_members(test):
test.Data0 += 1
test.Data1 += 1
def print_both_members(test):
print("Data0 is %d, Data1 is %d for %s"%(test.Data0, test.Data1,
test.__class__.__name__))
tests = [all_ulong(), all_ulonglong()]
for test in tests:
print_both_members(test)
Failed = False
while not Failed:
for test in tests:
inc_both_members(test)
print_both_members(test)
if not tests[0].Data0 == tests[1].Data0:
Failed = True
if not tests[0].Data1 == tests[1].Data1:
Failed = True
-----
>c:\python25\python.exe test.py
Data0 is 0, Data1 is 0 for all_ulong
Data0 is 0, Data1 is 0 for all_ulonglong
Data0 is 1, Data1 is 1 for all_ulong
Data0 is 1, Data1 is 1 for all_ulonglong
Data0 is 2, Data1 is 2 for all_ulong
Data0 is 2, Data1 is 1 for all_ulonglong
>c:\python26\python.exe test.py
Data0 is 0, Data1 is 0 for all_ulong
Data0 is 0, Data1 is 0 for all_ulonglong
Data0 is 1, Data1 is 1 for all_ulong
Data0 is 1, Data1 is 1 for all_ulonglong
Data0 is 2, Data1 is 2 for all_ulong
Data0 is 2, Data1 is 1 for all_ulonglong
>c:\python30\python.exe test.py
Data0 is 0, Data1 is 0 for all_ulong
Data0 is 0, Data1 is 0 for all_ulonglong
Data0 is 1, Data1 is 1 for all_ulong
Data0 is 1, Data1 is 1 for all_ulonglong
Data0 is 2, Data1 is 2 for all_ulong
Data0 is 2, Data1 is 1 for all_ulonglong
As you can see the second member Data1, is not incrementing correctly.
I found this issue because I started using c_ulonglong types for all
members so that when casting a byte stream to one of these ctype
structures, there are no incorrect values when casting to a member
crossing byte/word/long boundaries.
----------
assignee: theller
components: ctypes
messages: 88110
nosy: higstar, theller
severity: normal
status: open
title: c_ulonglong structure members appear read-only
type: compile error
versions: Python 2.5, Python 2.6, Python 3.0
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue6068>
_______________________________________
More information about the New-bugs-announce
mailing list