Improve ELF/Trophy loader's error checking

This commit is contained in:
Eladash 2021-03-21 07:03:21 +02:00 committed by Ivan
parent a67b347966
commit 2f333424a6
6 changed files with 61 additions and 53 deletions

View file

@ -52,12 +52,10 @@ bool TROPUSRLoader::LoadTableHeaders()
m_file.seek(0x30);
m_tableHeaders.clear();
m_tableHeaders.resize(m_header.tables_count);
for (TROPUSRTableHeader& tableHeader : m_tableHeaders)
if (!m_file.read<true>(m_tableHeaders, m_header.tables_count))
{
if (!m_file.read(tableHeader))
return false;
return false;
}
return true;
@ -77,25 +75,17 @@ bool TROPUSRLoader::LoadTables()
if (tableHeader.type == 4u)
{
m_table4.clear();
m_table4.resize(tableHeader.entries_count);
for (auto& entry : m_table4)
{
if (!m_file.read(entry))
return false;
}
if (!m_file.read<true>(m_table4, tableHeader.entries_count))
return false;
}
if (tableHeader.type == 6u)
{
m_table6.clear();
m_table6.resize(tableHeader.entries_count);
for (auto& entry : m_table6)
{
if (!m_file.read(entry))
return false;
}
if (!m_file.read<true>(m_table6, tableHeader.entries_count))
return false;
}
// TODO: Other tables