From be4d6e097fb1a076a1df537030d08fbccb5d9f6e Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Wed, 5 Aug 2026 09:06:11 +0200 Subject: [PATCH] moved protocol: Fix struct alignment issues --- CHANGELOG.md | 1 + src/daemon/psmove_moved_protocol.h | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f95a0a7..eb4aee4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,7 @@ starting after version 4.0.12, but historic entries might not. - Fix macOS version detection for macOS 11 and newer (fixes #456) - `examples/labs/`: Fix building of Qt examples by migrating to Qt 5 - Fixed the kernel center of CV-related image filters (was off-center before) +- Fix struct alignment issues on macOS/ARM64 ### Removed diff --git a/src/daemon/psmove_moved_protocol.h b/src/daemon/psmove_moved_protocol.h index fe5d7c15..a1297db3 100644 --- a/src/daemon/psmove_moved_protocol.h +++ b/src/daemon/psmove_moved_protocol.h @@ -59,7 +59,7 @@ struct PACKED PSMoveMovedProtocolHeader { uint16_t controller_id; }; -union PACKED PSMoveMovedRequest { +typedef union PACKED PSMoveMovedRequest { struct { struct PSMoveMovedProtocolHeader header; @@ -77,9 +77,9 @@ union PACKED PSMoveMovedRequest { }; uint8_t bytes[16]; -}; +} PSMoveMovedRequest; -union PACKED PSMoveMovedResponse { +typedef union PACKED PSMoveMovedResponse { struct { struct PSMoveMovedProtocolHeader header; @@ -106,12 +106,13 @@ union PACKED PSMoveMovedResponse { uint8_t btaddr[6]; } get_host_btaddr; }; - - uint8_t _padding[3]; }; uint8_t bytes[64]; -}; +} PSMoveMovedResponse; + +static_assert(sizeof(PSMoveMovedRequest) == 16, ""); +static_assert(sizeof(PSMoveMovedResponse) == 64, ""); #ifdef _WIN32 #pragma pack(pop)