mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-22 16:04:17 +00:00
implement ModelDbPart::Read & ModelDbModel::Read (#620)
* implement ModelDbPart::Read & ModelDbModel::Read * Update modeldb.cpp * Minor style fixes * Add comment about buffer overrun * Use sizeof on var --------- Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
@@ -6,16 +6,70 @@ DECOMP_SIZE_ASSERT(ModelDbModel, 0x38)
|
||||
DECOMP_SIZE_ASSERT(ModelDbPartList, 0x1c)
|
||||
DECOMP_SIZE_ASSERT(ModelDbPartListCursor, 0x10)
|
||||
|
||||
// STUB: LEGO1 0x100276b0
|
||||
// FUNCTION: LEGO1 0x100276b0
|
||||
MxResult ModelDbModel::Read(FILE* p_file)
|
||||
{
|
||||
return SUCCESS;
|
||||
MxU32 len;
|
||||
|
||||
if (fread(&len, sizeof(len), 1, p_file) != 1) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
m_modelName = new char[len];
|
||||
if (fread(m_modelName, len, 1, p_file) != 1) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (fread(&m_unk0x04, sizeof(m_unk0x04), 1, p_file) != 1) {
|
||||
return FAILURE;
|
||||
}
|
||||
if (fread(&m_unk0x08, sizeof(m_unk0x08), 1, p_file) != 1) {
|
||||
return FAILURE;
|
||||
}
|
||||
if (fread(&len, sizeof(len), 1, p_file) != 1) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
m_presenterName = new char[len];
|
||||
if (fread(m_presenterName, len, 1, p_file) != 1) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (fread(&m_unk0x10, sizeof(*m_unk0x10), 3, p_file) != 3) {
|
||||
return FAILURE;
|
||||
}
|
||||
if (fread(&m_unk0x1c, sizeof(*m_unk0x1c), 3, p_file) != 3) {
|
||||
return FAILURE;
|
||||
}
|
||||
if (fread(&m_unk0x28, sizeof(*m_unk0x28), 3, p_file) != 3) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
return fread(&m_unk0x34, sizeof(m_unk0x34), 1, p_file) == 1 ? SUCCESS : FAILURE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10027850
|
||||
// FUNCTION: LEGO1 0x10027850
|
||||
MxResult ModelDbPart::Read(FILE* p_file)
|
||||
{
|
||||
return SUCCESS;
|
||||
MxU32 len;
|
||||
char buff[128];
|
||||
|
||||
if (fread(&len, sizeof(len), 1, p_file) != 1) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// Critical bug: buffer overrun
|
||||
if (fread(buff, len, 1, p_file) != 1) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
m_roiName = buff;
|
||||
|
||||
if (fread(&m_unk0x10, sizeof(m_unk0x10), 1, p_file) != 1) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
return fread(&m_unk0x14, sizeof(m_unk0x14), 1, p_file) == 1 ? SUCCESS : FAILURE;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10027910
|
||||
|
Reference in New Issue
Block a user