https://git.reactos.org/?p=reactos.git;a=commitdiff;h=db089c517edb75d560760ec1ff8dac35cd0a2137

commit db089c517edb75d560760ec1ff8dac35cd0a2137
Author:     Hermès Bélusca-Maïto <[email protected]>
AuthorDate: Wed Apr 21 19:03:00 2021 +0200
Commit:     Hermès Bélusca-Maïto <[email protected]>
CommitDate: Wed May 5 17:24:12 2021 +0200

    [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;

Reply via email to