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:
commit
ef852b2c8f
2 changed files with 23 additions and 10 deletions
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue