mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-23 08:24:16 +00:00
MxDSBuffer::SkipToData
to 100% (#1245)
* MxDSBuffer::SkipToData to 100% * Add blank line
This commit is contained in:
@@ -338,42 +338,47 @@ MxCore* MxDSBuffer::ReadChunk(MxDSBuffer* p_buffer, MxU32* p_chunkData, MxU16 p_
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100c6df0
|
// FUNCTION: LEGO1 0x100c6df0
|
||||||
|
// FUNCTION: BETA10 0x10157e0a
|
||||||
MxU8* MxDSBuffer::SkipToData()
|
MxU8* MxDSBuffer::SkipToData()
|
||||||
{
|
{
|
||||||
MxU8* result = NULL;
|
MxU8* result = NULL;
|
||||||
|
|
||||||
if (m_pIntoBuffer != NULL) {
|
if (m_pIntoBuffer != NULL) {
|
||||||
do {
|
while (TRUE) {
|
||||||
MxU32* ptr = (MxU32*) m_pIntoBuffer;
|
switch (*(MxU32*) m_pIntoBuffer) {
|
||||||
switch (*ptr) {
|
|
||||||
case FOURCC('L', 'I', 'S', 'T'):
|
|
||||||
case FOURCC('R', 'I', 'F', 'F'):
|
|
||||||
m_pIntoBuffer = (MxU8*) (ptr + 3);
|
|
||||||
break;
|
|
||||||
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 += (*(MxU32*) (m_pIntoBuffer + 4) & 1) + *(MxU32*) (m_pIntoBuffer + 4);
|
||||||
m_pIntoBuffer = (MxU8*) ((MxU32*) m_pIntoBuffer + 2);
|
m_pIntoBuffer += 8;
|
||||||
if (m_pBuffer + (m_writeOffset - 8) < m_pIntoBuffer) {
|
|
||||||
m_pIntoBuffer2 = result;
|
if (m_pBuffer + m_writeOffset - 8 < m_pIntoBuffer) {
|
||||||
m_pIntoBuffer = NULL;
|
m_pIntoBuffer = NULL;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
goto done;
|
goto done;
|
||||||
case FOURCC('M', 'x', 'D', 'a'):
|
case FOURCC('M', 'x', 'D', 'a'):
|
||||||
case FOURCC('M', 'x', 'S', 't'):
|
case FOURCC('M', 'x', 'S', 't'):
|
||||||
m_pIntoBuffer = (MxU8*) (ptr + 2);
|
m_pIntoBuffer += 8;
|
||||||
break;
|
break;
|
||||||
case FOURCC('M', 'x', 'H', 'd'):
|
case FOURCC('M', 'x', 'H', 'd'):
|
||||||
m_pIntoBuffer = (MxU8*) ((MxU32) ptr + ptr[1] + 8);
|
m_pIntoBuffer += *(MxU32*) (m_pIntoBuffer + 4) + 8;
|
||||||
|
break;
|
||||||
|
case FOURCC('L', 'I', 'S', 'T'):
|
||||||
|
case FOURCC('R', 'I', 'F', 'F'):
|
||||||
|
m_pIntoBuffer += 12;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m_pIntoBuffer = NULL;
|
m_pIntoBuffer = NULL;
|
||||||
m_pIntoBuffer2 = NULL;
|
result = NULL;
|
||||||
return NULL;
|
goto done;
|
||||||
}
|
}
|
||||||
} while (m_pIntoBuffer <= m_pBuffer + (m_writeOffset - 8));
|
|
||||||
|
if (m_pIntoBuffer > m_pBuffer + m_writeOffset - 8) {
|
||||||
|
m_pIntoBuffer = NULL;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
done:
|
done:
|
||||||
m_pIntoBuffer2 = result;
|
m_pIntoBuffer2 = result;
|
||||||
|
Reference in New Issue
Block a user