mirror of https://github.com/AxioDL/metaforce.git
CMapArea: Remove type-punning undefined behavior within PostConstruct()
Casting up from unsigned char or char to an unrelated type isn't permitted by the C++ standard in the manner it's currently being done. We can utilize std::memcpy to mitigate this.
This commit is contained in:
parent
6ddbd15cfc
commit
b570168359
|
@ -36,8 +36,14 @@ void CMapArea::PostConstruct() {
|
||||||
u8* tmp = x3c_vertexStart;
|
u8* tmp = x3c_vertexStart;
|
||||||
m_verts.reserve(x2c_vertexCount);
|
m_verts.reserve(x2c_vertexCount);
|
||||||
for (u32 i = 0; i < x2c_vertexCount; ++i) {
|
for (u32 i = 0; i < x2c_vertexCount; ++i) {
|
||||||
float* fl = reinterpret_cast<float*>(tmp);
|
float x;
|
||||||
m_verts.emplace_back(hecl::SBig(fl[0]), hecl::SBig(fl[1]), hecl::SBig(fl[2]));
|
std::memcpy(&x, tmp, sizeof(float));
|
||||||
|
float y;
|
||||||
|
std::memcpy(&y, tmp + 4, sizeof(float));
|
||||||
|
float z;
|
||||||
|
std::memcpy(&z, tmp + 8, sizeof(float));
|
||||||
|
|
||||||
|
m_verts.emplace_back(hecl::SBig(x), hecl::SBig(y), hecl::SBig(z));
|
||||||
tmp += 12;
|
tmp += 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue