New submission from Matthieu Gautier:

I_set_sw function is missing a SWAP_INT.

This leads to wrong set of bitfield value.

Here is a script to reproduce:

----------
from ctypes import *

class HEADER(BigEndianStructure):
   _fields_ = ( ('pad', c_uint32, 16),
                ('v1', c_uint32, 4),
                ('v2', c_uint32, 12)
              )

b = bytearray(4)
header = HEADER.from_buffer(b)

header.type = 1
assert b == b'\x00\x00\x10\x00'

header.mode = 0x234
assert b == b'\x00\x00\x12\x34'
----------

----------
components: ctypes
files: ctypes_swap_uint.patch
keywords: patch
messages: 234682
nosy: mgautierfr
priority: normal
severity: normal
status: open
title: Missing SWAP_INT in I_set_sw
type: behavior
versions: Python 3.4
Added file: http://bugs.python.org/file37856/ctypes_swap_uint.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue23319>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to