Fix 64-bit mxdsbuffer pointer arithmetic

This commit is contained in:
Anonymous Maarten 2024-06-25 15:09:19 +02:00
parent 0281decbfd
commit c82e96c578

View File

@ -353,7 +353,7 @@ MxU8* MxDSBuffer::SkipToData()
case FOURCC('M', 'x', 'O', 'b'): case FOURCC('M', 'x', 'O', 'b'):
case FOURCC('M', 'x', 'C', 'h'): case FOURCC('M', 'x', 'C', 'h'):
result = m_pIntoBuffer; 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); m_pIntoBuffer = (MxU8*) ((MxU32*) m_pIntoBuffer + 2);
if (m_pBuffer + (m_writeOffset - 8) < m_pIntoBuffer) { if (m_pBuffer + (m_writeOffset - 8) < m_pIntoBuffer) {
m_pIntoBuffer2 = result; m_pIntoBuffer2 = result;
@ -366,7 +366,7 @@ MxU8* MxDSBuffer::SkipToData()
m_pIntoBuffer = (MxU8*) (ptr + 2); m_pIntoBuffer = (MxU8*) (ptr + 2);
break; break;
case FOURCC('M', 'x', 'H', 'd'): case FOURCC('M', 'x', 'H', 'd'):
m_pIntoBuffer = (MxU8*) ((MxU32) ptr + ptr[1] + 8); m_pIntoBuffer = (MxU8*) ptr + (ptr[1] + 8);
break; break;
default: default:
m_pIntoBuffer = NULL; m_pIntoBuffer = NULL;
@ -460,7 +460,7 @@ MxU8* MxDSBuffer::FUN_100c6fa0(MxU8* p_data)
if (current != p_data) { if (current != p_data) {
return current; return current;
} }
current = ((MxU32) current & 1) + current; current += ((uintptr_t) current) & 1;
current += 8; current += 8;
break; break;
case FOURCC('M', 'x', 'H', 'd'): case FOURCC('M', 'x', 'H', 'd'):