Fix NiStringPalette loading

pull/593/head
Alexei Dobrohotov 4 years ago
parent a038c448f2
commit 117697ea22

@ -460,21 +460,9 @@ void NiPalette::read(NIFStream *nif)
void NiStringPalette::read(NIFStream *nif) void NiStringPalette::read(NIFStream *nif)
{ {
unsigned int size = nif->getUInt(); palette = nif->getString();
if (!size) if (nif->getUInt() != palette.size())
return;
std::vector<char> source;
nif->getChars(source, size);
if (nif->getUInt() != size)
nif->file->warn("Failed size check in NiStringPalette"); nif->file->warn("Failed size check in NiStringPalette");
if (source[source.size()-1] != '\0')
source.emplace_back('\0');
const char* buffer = source.data();
while (static_cast<size_t>(buffer - source.data()) < source.size())
{
palette.emplace_back(buffer);
buffer += palette.back().size() + 1;
}
} }
void NiBoolData::read(NIFStream *nif) void NiBoolData::read(NIFStream *nif)

@ -262,7 +262,7 @@ public:
struct NiStringPalette : public Record struct NiStringPalette : public Record
{ {
std::vector<std::string> palette; std::string palette;
void read(NIFStream *nif) override; void read(NIFStream *nif) override;
}; };

Loading…
Cancel
Save