gh-60580: Fix a wrong type of `ctypes.wintypes.BYTE` (#97579)

Created from a patch file attached to an issue, by Anatoly Techtonik.
This commit is contained in:
Oleg Iarygin 2023-01-26 18:16:27 +04:00 committed by GitHub
parent f2ac9510a5
commit 409f5337a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 1 deletions

View File

@ -1,7 +1,7 @@
# The most useful windows datatypes
import ctypes
BYTE = ctypes.c_byte
BYTE = ctypes.c_ubyte
WORD = ctypes.c_ushort
DWORD = ctypes.c_ulong

View File

@ -1,3 +1,6 @@
# See <https://learn.microsoft.com/en-us/windows/win32/winprog/windows-data-types>
# for reference.
import unittest
# also work on POSIX
@ -38,6 +41,22 @@ class WinTypesTest(unittest.TestCase):
vb.value = []
self.assertIs(vb.value, False)
def assertIsSigned(self, ctype):
self.assertLess(ctype(-1).value, 0)
def assertIsUnsigned(self, ctype):
self.assertGreater(ctype(-1).value, 0)
def test_signedness(self):
for ctype in (wintypes.BYTE, wintypes.WORD, wintypes.DWORD,
wintypes.BOOLEAN, wintypes.UINT, wintypes.ULONG):
with self.subTest(ctype=ctype):
self.assertIsUnsigned(ctype)
for ctype in (wintypes.BOOL, wintypes.INT, wintypes.LONG):
with self.subTest(ctype=ctype):
self.assertIsSigned(ctype)
if __name__ == "__main__":
unittest.main()

View File

@ -0,0 +1,3 @@
:data:`ctypes.wintypes.BYTE` definition changed from
:data:`~ctypes.c_byte` to :data:`~ctypes.c_ubyte` to match Windows
SDK. Patch by Anatoly Techtonik and Oleg Iarygin.