1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-03-17 10:21:11 +00:00

ESM4::RACE: don't use current index if it's unset

To be safer. Doesn't help with FO4 segfaults though
This commit is contained in:
Alexei Kotov 2023-08-15 10:03:52 +03:00
parent 4605894a5a
commit 426eae3843

View File

@ -315,7 +315,11 @@ void ESM4::Race::load(ESM4::Reader& reader)
} }
case ESM4::SUB_MODL: case ESM4::SUB_MODL:
{ {
if (curr_part == 0) // head part if (currentIndex == 0xffffffff)
{
reader.skipSubRecordData();
}
else if (curr_part == 0) // head part
{ {
if (isMale || isTES4) if (isMale || isTES4)
reader.getZString(mHeadParts[currentIndex].mesh); reader.getZString(mHeadParts[currentIndex].mesh);
@ -351,7 +355,11 @@ void ESM4::Race::load(ESM4::Reader& reader)
break; // always 0x0000? break; // always 0x0000?
case ESM4::SUB_ICON: case ESM4::SUB_ICON:
{ {
if (curr_part == 0) // head part if (currentIndex == 0xffffffff)
{
reader.skipSubRecordData();
}
else if (curr_part == 0) // head part
{ {
if (isMale || isTES4) if (isMale || isTES4)
reader.getZString(mHeadParts[currentIndex].texture); reader.getZString(mHeadParts[currentIndex].texture);
@ -581,11 +589,14 @@ void ESM4::Race::load(ESM4::Reader& reader)
ESM::FormId formId; ESM::FormId formId;
reader.getFormId(formId); reader.getFormId(formId);
// FIXME: no order? head, mouth, eyes, brow, hair if (currentIndex != 0xffffffff)
if (isMale) {
mHeadPartIdsMale[currentIndex] = formId; // FIXME: no order? head, mouth, eyes, brow, hair
else if (isMale)
mHeadPartIdsFemale[currentIndex] = formId; mHeadPartIdsMale[currentIndex] = formId;
else
mHeadPartIdsFemale[currentIndex] = formId;
}
// std::cout << mEditorId << (isMale ? " male head " : " female head ") // std::cout << mEditorId << (isMale ? " male head " : " female head ")
// << formIdToString(formId) << " " << currentIndex << std::endl; // FIXME // << formIdToString(formId) << " " << currentIndex << std::endl; // FIXME