From c82e96c578a8d07b3a319684d265d41bb4332d45 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Tue, 25 Jun 2024 15:09:19 +0200 Subject: [PATCH] Fix 64-bit mxdsbuffer pointer arithmetic --- LEGO1/omni/src/stream/mxdsbuffer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/LEGO1/omni/src/stream/mxdsbuffer.cpp b/LEGO1/omni/src/stream/mxdsbuffer.cpp index e5e69c55..b1f4e92e 100644 --- a/LEGO1/omni/src/stream/mxdsbuffer.cpp +++ b/LEGO1/omni/src/stream/mxdsbuffer.cpp @@ -353,7 +353,7 @@ MxU8* MxDSBuffer::SkipToData() case FOURCC('M', 'x', 'O', 'b'): case FOURCC('M', 'x', 'C', 'h'): result = m_pIntoBuffer; - m_pIntoBuffer = (MxU8*) ((ptr[1] & 1) + ptr[1] + (MxU32) ptr); + m_pIntoBuffer = (MxU8*) ptr + ((ptr[1] & 1) + ptr[1]); m_pIntoBuffer = (MxU8*) ((MxU32*) m_pIntoBuffer + 2); if (m_pBuffer + (m_writeOffset - 8) < m_pIntoBuffer) { m_pIntoBuffer2 = result; @@ -366,7 +366,7 @@ MxU8* MxDSBuffer::SkipToData() m_pIntoBuffer = (MxU8*) (ptr + 2); break; case FOURCC('M', 'x', 'H', 'd'): - m_pIntoBuffer = (MxU8*) ((MxU32) ptr + ptr[1] + 8); + m_pIntoBuffer = (MxU8*) ptr + (ptr[1] + 8); break; default: m_pIntoBuffer = NULL; @@ -460,7 +460,7 @@ MxU8* MxDSBuffer::FUN_100c6fa0(MxU8* p_data) if (current != p_data) { return current; } - current = ((MxU32) current & 1) + current; + current += ((uintptr_t) current) & 1; current += 8; break; case FOURCC('M', 'x', 'H', 'd'):