From 98b522cda91744d10dd5a46ebcdcb9f4950a8a6a Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Tue, 4 Aug 2026 06:35:12 +0200 Subject: [PATCH] ubfix for strict aliasing violation (#2341) --- src/link.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/link.c b/src/link.c index fe1c13f66a..8a04b649f9 100644 --- a/src/link.c +++ b/src/link.c @@ -2183,6 +2183,9 @@ static bool8 DoHandshake(void) u8 i; u8 playerCount; u16 minRecv; +#ifdef UBFIX + u64 recvSiomlt; +#endif playerCount = 0; minRecv = 0xFFFF; @@ -2194,7 +2197,12 @@ static bool8 DoHandshake(void) { REG_SIOMLT_SEND = SLAVE_HANDSHAKE; } +#ifdef UBFIX + recvSiomlt = REG_SIOMLT_RECV; + memcpy(gLink.handshakeBuffer, &recvSiomlt, sizeof(gLink.handshakeBuffer)); +#else *(u64 *)gLink.handshakeBuffer = REG_SIOMLT_RECV; +#endif REG_SIOMLT_RECV = 0; gLink.handshakeAsMaster = FALSE; for (i = 0; i < MAX_LINK_PLAYERS; i++) @@ -2234,8 +2242,13 @@ static void DoRecv(void) u16 recv[4]; u8 i; u8 index; +#ifdef UBFIX + u64 recvSiomlt = REG_SIOMLT_RECV; + memcpy(recv, &recvSiomlt, sizeof(recv)); +#else *(u64 *)recv = REG_SIOMLT_RECV; +#endif if (gLink.sendCmdIndex == 0) { for (i = 0; i < gLink.playerCount; i++)