From db089c517edb75d560760ec1ff8dac35cd0a2137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Wed, 21 Apr 2021 19:03:00 +0200 Subject: [PATCH] [PSDK] Remove a buggy GNU-specific "PACKED" attribute in KEY_EVENT_RECORD structure declaration. (#3619) CORE-17545 No other public header out there (in MS PSDK, MinGW, Wine, etc...) does have this hack (that was introduced back in the days in r15141 / commit 01df92bc). Add static assert on KEY_EVENT_RECORD's uChar member to ensure it's properly aligned. May fix Clang warning: win32ss/user/winsrv/consrv/lineinput.c:457:62: warning: taking address of packed member 'uChar' of class or structure '_KEY_EVENT_RECORD' may result in an unaligned pointer value [-Waddress-of-packed-member] LineInputEdit(Console, (Overstrike ? 1 : 0), 1, &KeyEvent->uChar.UnicodeChar); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ and whatnot... --- sdk/include/psdk/wincon.h | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sdk/include/psdk/wincon.h b/sdk/include/psdk/wincon.h index 6145b93cf1c..bb6e1ed8dc5 100644 --- a/sdk/include/psdk/wincon.h +++ b/sdk/include/psdk/wincon.h @@ -246,12 +246,9 @@ typedef struct _KEY_EVENT_RECORD { CHAR AsciiChar; } uChar; DWORD dwControlKeyState; -} -#ifdef __GNUC__ -/* gcc's alignment is not what win32 expects */ -PACKED -#endif -KEY_EVENT_RECORD, *PKEY_EVENT_RECORD; +} KEY_EVENT_RECORD, *PKEY_EVENT_RECORD; + +C_ASSERT(FIELD_OFFSET(KEY_EVENT_RECORD, uChar) == 0xA); typedef struct _MOUSE_EVENT_RECORD { COORD dwMousePosition;