diff --git a/src/MeshTools/Clean.h b/src/MeshTools/Clean.h index 09a68d58c..47dde00e7 100644 --- a/src/MeshTools/Clean.h +++ b/src/MeshTools/Clean.h @@ -105,7 +105,8 @@ template class Clean { class IndexHash { public: inline std::size_t operator()(const Math::Vector& data) const { - return *reinterpret_cast(Corrade::Utility::MurmurHash2()(reinterpret_cast(&data), sizeof(data)).byteArray()); + /* GCC 4.4 thinks reinterpret_cast will break strict aliasing, doing it with bit cast instead */ + return Corrade::Utility::bitCast(Corrade::Utility::MurmurHash2()(reinterpret_cast(&data), sizeof(data))); } }; diff --git a/src/ResourceManager.h b/src/ResourceManager.h index 48835fffc..fdef3867f 100644 --- a/src/ResourceManager.h +++ b/src/ResourceManager.h @@ -116,7 +116,8 @@ template class Resource; namespace Implementation { struct ResourceKeyHash { inline std::size_t operator()(ResourceKey key) const { - return *reinterpret_cast(key.byteArray()); + /* GCC 4.4 thinks reinterpret_cast will break strict aliasing, doing it with bit cast instead */ + return Corrade::Utility::bitCast(key); } };