diff --git a/src/MeshTools/Interleave.h b/src/MeshTools/Interleave.h index 4a5c2d2c9..fdf052d83 100644 --- a/src/MeshTools/Interleave.h +++ b/src/MeshTools/Interleave.h @@ -113,11 +113,9 @@ class Interleave { /* Fill gap with zeros */ std::size_t writeOne(char* startingOffset, std::size_t gap) { - char* data = new char[gap](); for(std::size_t i = 0; i != _attributeCount; ++i) - memcpy(startingOffset+i*_stride, data, gap); + std::memset(startingOffset+i*_stride, 0, gap); - delete[] data; return gap; } diff --git a/src/MeshTools/Test/InterleaveTest.cpp b/src/MeshTools/Test/InterleaveTest.cpp index 13375461f..beb57aa35 100644 --- a/src/MeshTools/Test/InterleaveTest.cpp +++ b/src/MeshTools/Test/InterleaveTest.cpp @@ -122,13 +122,16 @@ void InterleaveTest::writeGaps() { CORRADE_COMPARE(attributeCount, std::size_t(3)); CORRADE_COMPARE(stride, std::size_t(12)); std::size_t size = attributeCount*stride; + if(!Utility::Endianness::isBigEndian()) { + /* byte, _____________gap, int___________________, short_____, _______gap */ CORRADE_COMPARE(std::vector(data, data+size), (std::vector{ 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 })); } else { + /* byte, _____________gap, ___________________int, _____short, _______gap */ CORRADE_COMPARE(std::vector(data, data+size), (std::vector{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00,