Fix MiniRez crash on empty res files

This commit is contained in:
elasota
2020-01-03 00:13:21 -05:00
parent 1da2851d3a
commit e00f506ee2

View File

@@ -416,6 +416,8 @@ int main(int argc, const char **argv)
}
}
printf("Re-emit OK\n");
const size_t resDataSize = resourceForkData.size() - resForkDataStart;
const size_t resMapPos = resourceForkData.size();
@@ -441,16 +443,22 @@ int main(int argc, const char **argv)
std::vector<size_t> refListStartForType;
refListStartForType.resize(resTypeCounts.size());
if (resTypeCounts.size() > 0)
{
refListStartForType[0] = 0;
for (size_t i = 1; i < refListStartForType.size(); i++)
refListStartForType[i] = refListStartForType[i - 1] + resTypeCounts[i - 1];
}
std::vector<size_t> nameListStarts;
nameListStarts.resize(uniqueResNames.size());
if (nameListStarts.size() > 0)
{
nameListStarts[0] = 0;
for (size_t i = 1; i < nameListStarts.size(); i++)
nameListStarts[i] = nameListStarts[i - 1] + uniqueResNames[i - 1].size() + 1;
}
// Write resource type list
for (size_t i = 0; i < uniqueResTypes.size(); i++)
@@ -514,6 +522,8 @@ int main(int argc, const char **argv)
BytePack::BigUInt32(&resourceForkData[8], static_cast<uint32_t>(resDataSize));
BytePack::BigUInt32(&resourceForkData[12], static_cast<uint32_t>(resMapSize));
printf("Writing to %s...", argv[2]);
FILE *outF = nullptr;
if (fopen_s(&outF, argv[2], "wb"))
{