mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 14:53:52 +00:00
Fix MiniRez crash on empty res files
This commit is contained in:
@@ -414,7 +414,9 @@ int main(int argc, const char **argv)
|
|||||||
if (std::find(uniqueResNames.begin(), uniqueResNames.end(), res->m_name) == uniqueResNames.end())
|
if (std::find(uniqueResNames.begin(), uniqueResNames.end(), res->m_name) == uniqueResNames.end())
|
||||||
uniqueResNames.push_back(res->m_name);
|
uniqueResNames.push_back(res->m_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("Re-emit OK\n");
|
||||||
|
|
||||||
const size_t resDataSize = resourceForkData.size() - resForkDataStart;
|
const size_t resDataSize = resourceForkData.size() - resForkDataStart;
|
||||||
const size_t resMapPos = resourceForkData.size();
|
const size_t resMapPos = resourceForkData.size();
|
||||||
@@ -440,17 +442,23 @@ int main(int argc, const char **argv)
|
|||||||
|
|
||||||
std::vector<size_t> refListStartForType;
|
std::vector<size_t> refListStartForType;
|
||||||
refListStartForType.resize(resTypeCounts.size());
|
refListStartForType.resize(resTypeCounts.size());
|
||||||
|
|
||||||
refListStartForType[0] = 0;
|
if (resTypeCounts.size() > 0)
|
||||||
for (size_t i = 1; i < refListStartForType.size(); i++)
|
{
|
||||||
refListStartForType[i] = refListStartForType[i - 1] + resTypeCounts[i - 1];
|
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;
|
std::vector<size_t> nameListStarts;
|
||||||
nameListStarts.resize(uniqueResNames.size());
|
nameListStarts.resize(uniqueResNames.size());
|
||||||
|
|
||||||
nameListStarts[0] = 0;
|
if (nameListStarts.size() > 0)
|
||||||
for (size_t i = 1; i < nameListStarts.size(); i++)
|
{
|
||||||
nameListStarts[i] = nameListStarts[i - 1] + uniqueResNames[i - 1].size() + 1;
|
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
|
// Write resource type list
|
||||||
for (size_t i = 0; i < uniqueResTypes.size(); i++)
|
for (size_t i = 0; i < uniqueResTypes.size(); i++)
|
||||||
@@ -512,7 +520,9 @@ int main(int argc, const char **argv)
|
|||||||
BytePack::BigUInt32(&resourceForkData[0], static_cast<uint32_t>(resForkDataStart));
|
BytePack::BigUInt32(&resourceForkData[0], static_cast<uint32_t>(resForkDataStart));
|
||||||
BytePack::BigUInt32(&resourceForkData[4], static_cast<uint32_t>(resMapPos));
|
BytePack::BigUInt32(&resourceForkData[4], static_cast<uint32_t>(resMapPos));
|
||||||
BytePack::BigUInt32(&resourceForkData[8], static_cast<uint32_t>(resDataSize));
|
BytePack::BigUInt32(&resourceForkData[8], static_cast<uint32_t>(resDataSize));
|
||||||
BytePack::BigUInt32(&resourceForkData[12], static_cast<uint32_t>(resMapSize));
|
BytePack::BigUInt32(&resourceForkData[12], static_cast<uint32_t>(resMapSize));
|
||||||
|
|
||||||
|
printf("Writing to %s...", argv[2]);
|
||||||
|
|
||||||
FILE *outF = nullptr;
|
FILE *outF = nullptr;
|
||||||
if (fopen_s(&outF, argv[2], "wb"))
|
if (fopen_s(&outF, argv[2], "wb"))
|
||||||
|
Reference in New Issue
Block a user