mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-20 23:01:16 +00:00
remove casts on read, add size assert
This commit is contained in:
parent
fd4959d516
commit
66a6b3bab2
@ -1,4 +1,7 @@
|
|||||||
#include "mxioinfo.h"
|
#include "mxioinfo.h"
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(MXIOINFO, sizeof(MMIOINFO));
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100cc800
|
// OFFSET: LEGO1 0x100cc800
|
||||||
MXIOINFO::MXIOINFO()
|
MXIOINFO::MXIOINFO()
|
||||||
@ -24,8 +27,7 @@ MxU16 MXIOINFO::Open(const char *filename, DWORD fdwOpen)
|
|||||||
m_lDiskOffset = 0;
|
m_lDiskOffset = 0;
|
||||||
|
|
||||||
// Cast of fdWOpen to u16 forces the `movzx` instruction
|
// Cast of fdWOpen to u16 forces the `movzx` instruction
|
||||||
//m_hmmio = OpenFile(filename, &_unused, (unsigned short)fdwOpen);
|
m_hmmio = OpenFile(filename, &_unused, (MxU16)fdwOpen);
|
||||||
m_hmmio = OpenFile(filename, &_unused, fdwOpen);
|
|
||||||
|
|
||||||
if (m_hmmio != HFILE_ERROR) {
|
if (m_hmmio != HFILE_ERROR) {
|
||||||
m_dwFlags = fdwOpen;
|
m_dwFlags = fdwOpen;
|
||||||
@ -79,7 +81,7 @@ MxU16 MXIOINFO::Close(MxLong arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100cc930
|
// OFFSET: LEGO1 0x100cc930
|
||||||
MxLong MXIOINFO::Read(HPSTR pch, LONG cch)
|
MxLong MXIOINFO::Read(void *pch, LONG cch)
|
||||||
{
|
{
|
||||||
MxLong bytes_read = 0;
|
MxLong bytes_read = 0;
|
||||||
|
|
||||||
@ -365,7 +367,7 @@ MxU16 MXIOINFO::Descend(MMCKINFO *pmmcki, const MMCKINFO *pmmckiParent, unsigned
|
|||||||
|
|
||||||
if (!fuDescend) {
|
if (!fuDescend) {
|
||||||
pmmcki->dwFlags = 0;
|
pmmcki->dwFlags = 0;
|
||||||
if (Read((char *)pmmcki, 8) != 8) {
|
if (Read(pmmcki, 8) != 8) {
|
||||||
result = MMIOERR_CANNOTREAD;
|
result = MMIOERR_CANNOTREAD;
|
||||||
} else {
|
} else {
|
||||||
if (m_pchBuffer) {
|
if (m_pchBuffer) {
|
||||||
@ -375,7 +377,7 @@ MxU16 MXIOINFO::Descend(MMCKINFO *pmmcki, const MMCKINFO *pmmckiParent, unsigned
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pmmcki->ckid == FOURCC_RIFF || pmmcki->ckid == FOURCC_LIST) {
|
if (pmmcki->ckid == FOURCC_RIFF || pmmcki->ckid == FOURCC_LIST) {
|
||||||
if (Read((char *)&pmmcki->fccType, 4) != 4) {
|
if (Read(&pmmcki->fccType, 4) != 4) {
|
||||||
result = MMIOERR_CANNOTREAD;
|
result = MMIOERR_CANNOTREAD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -393,7 +395,7 @@ MxU16 MXIOINFO::Descend(MMCKINFO *pmmcki, const MMCKINFO *pmmckiParent, unsigned
|
|||||||
|
|
||||||
// This loop is... something
|
// This loop is... something
|
||||||
do {
|
do {
|
||||||
if (Read((char *)&tmp, 8) != 8) {
|
if (Read(&tmp, 8) != 8) {
|
||||||
// If the first read fails, report read error. Else EOF.
|
// If the first read fails, report read error. Else EOF.
|
||||||
result = read_ok ? MMIOERR_CHUNKNOTFOUND : MMIOERR_CANNOTREAD;
|
result = read_ok ? MMIOERR_CHUNKNOTFOUND : MMIOERR_CANNOTREAD;
|
||||||
running = FALSE;
|
running = FALSE;
|
||||||
@ -411,7 +413,7 @@ MxU16 MXIOINFO::Descend(MMCKINFO *pmmcki, const MMCKINFO *pmmckiParent, unsigned
|
|||||||
} else {
|
} else {
|
||||||
if ((fuDescend == MMIO_FINDLIST && tmp.ckid == FOURCC_LIST) ||
|
if ((fuDescend == MMIO_FINDLIST && tmp.ckid == FOURCC_LIST) ||
|
||||||
(fuDescend == MMIO_FINDRIFF && tmp.ckid == FOURCC_RIFF)) {
|
(fuDescend == MMIO_FINDRIFF && tmp.ckid == FOURCC_RIFF)) {
|
||||||
if (Read((char *)&tmp.fccType, 4) != 4) {
|
if (Read(&tmp.fccType, 4) != 4) {
|
||||||
result = MMIOERR_CANNOTREAD;
|
result = MMIOERR_CANNOTREAD;
|
||||||
} else {
|
} else {
|
||||||
if (pmmcki->fccType != tmp.fccType)
|
if (pmmcki->fccType != tmp.fccType)
|
||||||
|
|||||||
@ -14,8 +14,8 @@ class MXIOINFO
|
|||||||
|
|
||||||
MxU16 Open(const char *filename, DWORD fdwOpen);
|
MxU16 Open(const char *filename, DWORD fdwOpen);
|
||||||
MxU16 Close(MxLong arg);
|
MxU16 Close(MxLong arg);
|
||||||
|
MxLong Read(void *pch, LONG cch);
|
||||||
MxLong Seek(LONG lOffset, int iOrigin);
|
MxLong Seek(LONG lOffset, int iOrigin);
|
||||||
MxLong Read(HPSTR pch, LONG cch);
|
|
||||||
MxU16 SetBuffer(LPSTR pchBuffer, LONG cchBuffer, LONG unk);
|
MxU16 SetBuffer(LPSTR pchBuffer, LONG cchBuffer, LONG unk);
|
||||||
MxU16 Flush(UINT);
|
MxU16 Flush(UINT);
|
||||||
MxU16 Advance(UINT);
|
MxU16 Advance(UINT);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user