diff --git a/src/util/ipc.h b/src/util/ipc.h index 010148f..c340c53 100644 --- a/src/util/ipc.h +++ b/src/util/ipc.h @@ -35,8 +35,8 @@ namespace IPC { struct Message { - static const size_t size = 32; - static const size_t dataSize = 24; + static constexpr size_t size = 40; + static constexpr size_t dataSize = 32; uint64_t messageCode { 0 }; uint8_t messageData[dataSize] { 0, }; diff --git a/src/wayland-egl/ipc-waylandegl.h b/src/wayland-egl/ipc-waylandegl.h index cce96f8..3441e5e 100644 --- a/src/wayland-egl/ipc-waylandegl.h +++ b/src/wayland-egl/ipc-waylandegl.h @@ -37,7 +37,7 @@ namespace IPC { namespace WaylandEGL { struct BufferCommit { - uint8_t padding[24]; + uint8_t padding[sizeof(Message::messageData)]; static const uint64_t code = 1; static void construct(Message& message) @@ -52,7 +52,7 @@ struct BufferCommit { static_assert(sizeof(BufferCommit) == Message::dataSize, "BufferCommit is of correct size"); struct FrameComplete { - int8_t padding[24]; + int8_t padding[sizeof(Message::messageData)]; static const uint64_t code = 2; static void construct(Message& message) diff --git a/src/wayland/display.cpp b/src/wayland/display.cpp index 3e06752..6ad41d9 100644 --- a/src/wayland/display.cpp +++ b/src/wayland/display.cpp @@ -644,6 +644,7 @@ void EventDispatcher::sendEvent( wpe_input_axis_event& event ) { IPC::Message message; message.messageCode = MsgType::AXIS; + static_assert(sizeof(event) <= sizeof(message.messageData), "Message::messageData is of correct size"); memcpy( message.messageData, &event, sizeof(event) ); m_ipc->sendMessage(IPC::Message::data(message), IPC::Message::size); }