- Initialize the nerve checksum at compile-time instead of run-time.

- Fixed: Crash in FWadCollection::RenameNerve() for files without a FileReader object.

SVN r3932 (trunk)
This commit is contained in:
Randy Heit 2012-11-03 00:38:58 +00:00
parent aab12c6b0c
commit d0c3c924d4

View file

@ -828,13 +828,17 @@ void FWadCollection::RenameNerve ()
bool found = false; bool found = false;
BYTE cksum[16]; BYTE cksum[16];
BYTE nerve[16] = { 0x96, 0x7d, 0x5a, 0xe2, 0x3d, 0xaf, 0x45, 0x19, static const BYTE nerve[16] = { 0x96, 0x7d, 0x5a, 0xe2, 0x3d, 0xaf, 0x45, 0x19,
0x62, 0x12, 0xae, 0x1b, 0x60, 0x5d, 0xa3, 0xb0 }; 0x62, 0x12, 0xae, 0x1b, 0x60, 0x5d, 0xa3, 0xb0 };
size_t nervesize = 3819855; // NERVE.WAD's file size size_t nervesize = 3819855; // NERVE.WAD's file size
int w = IWAD_FILENUM; int w = IWAD_FILENUM;
while (++w < GetNumWads()) while (++w < GetNumWads())
{ {
FileReader *fr = GetFileReader(w); FileReader *fr = GetFileReader(w);
if (fr == NULL)
{
continue;
}
if (fr->GetLength() != nervesize) if (fr->GetLength() != nervesize)
{ {
// Skip MD5 computation when there is a // Skip MD5 computation when there is a
@ -855,22 +859,20 @@ void FWadCollection::RenameNerve ()
if (!found) if (!found)
return; return;
for (DWORD i = 0; i < LumpInfo.Size(); i++) for (int i = GetFirstLump(w); i <= GetLastLump(w); i++)
{ {
// Only rename the maps from NERVE.WAD // Only rename the maps from NERVE.WAD
if (LumpInfo[i].wadnum == w) assert(LumpInfo[i].wadnum == w);
if (LumpInfo[i].lump->dwName == MAKE_ID('C', 'W', 'I', 'L'))
{ {
if (LumpInfo[i].lump->dwName == MAKE_ID('C', 'W', 'I', 'L')) LumpInfo[i].lump->Name[0] = 'N';
{ }
LumpInfo[i].lump->Name[0] = 'N'; else if (LumpInfo[i].lump->dwName == MAKE_ID('M', 'A', 'P', '0'))
} {
else if (LumpInfo[i].lump->dwName == MAKE_ID('M', 'A', 'P', '0')) LumpInfo[i].lump->Name[6] = LumpInfo[i].lump->Name[4];
{ LumpInfo[i].lump->Name[5] = '0';
LumpInfo[i].lump->Name[6] = LumpInfo[i].lump->Name[4]; LumpInfo[i].lump->Name[4] = 'L';
LumpInfo[i].lump->Name[5] = '0'; LumpInfo[i].lump->dwName = MAKE_ID('L', 'E', 'V', 'E');
LumpInfo[i].lump->Name[4] = 'L';
LumpInfo[i].lump->dwName = MAKE_ID('L', 'E', 'V', 'E');
}
} }
} }
} }