1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-03-27 05:40:25 +00:00

Merge branch 'fix_ubsan_issues' into 'master'

Fix UBSAN issues

See merge request OpenMW/openmw!528
This commit is contained in:
Alexei Dobrohotov 2021-01-10 08:03:20 +00:00
commit ef852b2c8f
2 changed files with 23 additions and 10 deletions

View file

@ -21,18 +21,31 @@ namespace DetourNavigator
std::vector<unsigned char> result(indicesSize + verticesSize + areaTypesSize + waterSize + offMeshConnectionsSize); std::vector<unsigned char> result(indicesSize + verticesSize + areaTypesSize + waterSize + offMeshConnectionsSize);
unsigned char* dst = result.data(); unsigned char* dst = result.data();
if (indicesSize > 0)
{
std::memcpy(dst, recastMesh.getIndices().data(), indicesSize); std::memcpy(dst, recastMesh.getIndices().data(), indicesSize);
dst += indicesSize; dst += indicesSize;
}
if (verticesSize > 0)
{
std::memcpy(dst, recastMesh.getVertices().data(), verticesSize); std::memcpy(dst, recastMesh.getVertices().data(), verticesSize);
dst += verticesSize; dst += verticesSize;
}
if (areaTypesSize > 0)
{
std::memcpy(dst, recastMesh.getAreaTypes().data(), areaTypesSize); std::memcpy(dst, recastMesh.getAreaTypes().data(), areaTypesSize);
dst += areaTypesSize; dst += areaTypesSize;
}
if (waterSize > 0)
{
std::memcpy(dst, recastMesh.getWater().data(), waterSize); std::memcpy(dst, recastMesh.getWater().data(), waterSize);
dst += waterSize; dst += waterSize;
}
if (offMeshConnectionsSize > 0)
std::memcpy(dst, offMeshConnections.data(), offMeshConnectionsSize); std::memcpy(dst, offMeshConnections.data(), offMeshConnectionsSize);
return result; return result;

View file

@ -25,7 +25,7 @@ void ESM::SavedGame::load (ESMReader &esm)
esm.getSubNameIs("SCRN"); esm.getSubNameIs("SCRN");
esm.getSubHeader(); esm.getSubHeader();
mScreenshot.resize(esm.getSubSize()); mScreenshot.resize(esm.getSubSize());
esm.getExact(&mScreenshot[0], mScreenshot.size()); esm.getExact(mScreenshot.data(), mScreenshot.size());
} }
void ESM::SavedGame::save (ESMWriter &esm) const void ESM::SavedGame::save (ESMWriter &esm) const