Log a warning if size in SCHD (script header) does not match SCDT (bytecode) size instead of failing

pull/187/head
MiroslavR 7 years ago
parent f151eccc23
commit 06dc94552f

@ -83,10 +83,24 @@ namespace ESM
loadSCVR(esm);
break;
case ESM::FourCC<'S','C','D','T'>::value:
{
// compiled script
mScriptData.resize(mData.mScriptDataSize);
esm.getHExact(&mScriptData[0], mScriptData.size());
esm.getSubHeader();
uint32_t subSize = esm.getSubSize();
if (subSize != static_cast<uint32_t>(mData.mScriptDataSize))
{
std::stringstream ss;
ss << "ESM Warning: Script data size defined in SCHD subrecord does not match size of SCDT subrecord";
ss << "\n File: " << esm.getName();
ss << "\n Offset: 0x" << std::hex << esm.getFileOffset();
std::cerr << ss.str() << std::endl;
}
mScriptData.resize(subSize);
esm.getExact(&mScriptData[0], mScriptData.size());
break;
}
case ESM::FourCC<'S','C','T','X'>::value:
mScriptText = esm.getHString();
break;

Loading…
Cancel
Save