From 66a6b3bab216e379daef3540c624d0fa1da69d5e Mon Sep 17 00:00:00 2001 From: disinvite Date: Sun, 2 Jul 2023 17:59:58 -0400 Subject: [PATCH] remove casts on read, add size assert --- LEGO1/mxioinfo.cpp | 16 +++++++++------- LEGO1/mxioinfo.h | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/LEGO1/mxioinfo.cpp b/LEGO1/mxioinfo.cpp index 11022b44..1c082946 100644 --- a/LEGO1/mxioinfo.cpp +++ b/LEGO1/mxioinfo.cpp @@ -1,4 +1,7 @@ #include "mxioinfo.h" +#include "decomp.h" + +DECOMP_SIZE_ASSERT(MXIOINFO, sizeof(MMIOINFO)); // OFFSET: LEGO1 0x100cc800 MXIOINFO::MXIOINFO() @@ -24,8 +27,7 @@ MxU16 MXIOINFO::Open(const char *filename, DWORD fdwOpen) m_lDiskOffset = 0; // Cast of fdWOpen to u16 forces the `movzx` instruction - //m_hmmio = OpenFile(filename, &_unused, (unsigned short)fdwOpen); - m_hmmio = OpenFile(filename, &_unused, fdwOpen); + m_hmmio = OpenFile(filename, &_unused, (MxU16)fdwOpen); if (m_hmmio != HFILE_ERROR) { m_dwFlags = fdwOpen; @@ -79,7 +81,7 @@ MxU16 MXIOINFO::Close(MxLong arg) } // OFFSET: LEGO1 0x100cc930 -MxLong MXIOINFO::Read(HPSTR pch, LONG cch) +MxLong MXIOINFO::Read(void *pch, LONG cch) { MxLong bytes_read = 0; @@ -365,7 +367,7 @@ MxU16 MXIOINFO::Descend(MMCKINFO *pmmcki, const MMCKINFO *pmmckiParent, unsigned if (!fuDescend) { pmmcki->dwFlags = 0; - if (Read((char *)pmmcki, 8) != 8) { + if (Read(pmmcki, 8) != 8) { result = MMIOERR_CANNOTREAD; } else { 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 (Read((char *)&pmmcki->fccType, 4) != 4) { + if (Read(&pmmcki->fccType, 4) != 4) { result = MMIOERR_CANNOTREAD; } } @@ -393,7 +395,7 @@ MxU16 MXIOINFO::Descend(MMCKINFO *pmmcki, const MMCKINFO *pmmckiParent, unsigned // This loop is... something do { - if (Read((char *)&tmp, 8) != 8) { + if (Read(&tmp, 8) != 8) { // If the first read fails, report read error. Else EOF. result = read_ok ? MMIOERR_CHUNKNOTFOUND : MMIOERR_CANNOTREAD; running = FALSE; @@ -411,7 +413,7 @@ MxU16 MXIOINFO::Descend(MMCKINFO *pmmcki, const MMCKINFO *pmmckiParent, unsigned } else { if ((fuDescend == MMIO_FINDLIST && tmp.ckid == FOURCC_LIST) || (fuDescend == MMIO_FINDRIFF && tmp.ckid == FOURCC_RIFF)) { - if (Read((char *)&tmp.fccType, 4) != 4) { + if (Read(&tmp.fccType, 4) != 4) { result = MMIOERR_CANNOTREAD; } else { if (pmmcki->fccType != tmp.fccType) diff --git a/LEGO1/mxioinfo.h b/LEGO1/mxioinfo.h index 419e84af..5e8e0065 100644 --- a/LEGO1/mxioinfo.h +++ b/LEGO1/mxioinfo.h @@ -14,8 +14,8 @@ class MXIOINFO MxU16 Open(const char *filename, DWORD fdwOpen); MxU16 Close(MxLong arg); + MxLong Read(void *pch, LONG cch); MxLong Seek(LONG lOffset, int iOrigin); - MxLong Read(HPSTR pch, LONG cch); MxU16 SetBuffer(LPSTR pchBuffer, LONG cchBuffer, LONG unk); MxU16 Flush(UINT); MxU16 Advance(UINT);