Browse Source

GCC 4.4: fixed some strict-aliasing warnings.

Vladimír Vondruš 14 years ago
parent
commit
f449ba9696
  1. 3
      src/MeshTools/Clean.h
  2. 3
      src/ResourceManager.h

3
src/MeshTools/Clean.h

@ -105,7 +105,8 @@ template<class Vertex, std::size_t vertexSize = Vertex::Size> class Clean {
class IndexHash {
public:
inline std::size_t operator()(const Math::Vector<vertexSize, std::size_t>& data) const {
return *reinterpret_cast<const std::size_t*>(Corrade::Utility::MurmurHash2()(reinterpret_cast<const char*>(&data), sizeof(data)).byteArray());
/* GCC 4.4 thinks reinterpret_cast will break strict aliasing, doing it with bit cast instead */
return Corrade::Utility::bitCast<std::size_t>(Corrade::Utility::MurmurHash2()(reinterpret_cast<const char*>(&data), sizeof(data)));
}
};

3
src/ResourceManager.h

@ -116,7 +116,8 @@ template<class T, class U> class Resource;
namespace Implementation {
struct ResourceKeyHash {
inline std::size_t operator()(ResourceKey key) const {
return *reinterpret_cast<const std::size_t*>(key.byteArray());
/* GCC 4.4 thinks reinterpret_cast will break strict aliasing, doing it with bit cast instead */
return Corrade::Utility::bitCast<std::size_t>(key);
}
};

Loading…
Cancel
Save