From 76e20b6b8aa4b80cca568922dc5907a49c2136b0 Mon Sep 17 00:00:00 2001
From: Philip Trettner <Philip.Trettner@rwth-aachen.de>
Date: Thu, 1 Apr 2021 13:04:17 +0200
Subject: [PATCH] improved hash for handles

---
 src/polymesh/hash.hh | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/polymesh/hash.hh b/src/polymesh/hash.hh
index 6fdcc31..f94afea 100644
--- a/src/polymesh/hash.hh
+++ b/src/polymesh/hash.hh
@@ -22,11 +22,11 @@ struct hash
     template <class tag>
     size_t operator()(polymesh::primitive_handle<tag> const& i) const noexcept
     {
-        return i.idx.value;
+        return size_t(i.idx.value) ^ size_t(i.mesh);
     }
-    size_t operator()(polymesh::face_handle const& i) const noexcept { return i.idx.value; }
-    size_t operator()(polymesh::vertex_handle const& i) const noexcept { return i.idx.value; }
-    size_t operator()(polymesh::edge_handle const& i) const noexcept { return i.idx.value; }
-    size_t operator()(polymesh::halfedge_handle const& i) const noexcept { return i.idx.value; }
+    size_t operator()(polymesh::face_handle const& i) const noexcept { return size_t(i.idx.value) ^ size_t(i.mesh); }
+    size_t operator()(polymesh::vertex_handle const& i) const noexcept { return size_t(i.idx.value) ^ size_t(i.mesh); }
+    size_t operator()(polymesh::edge_handle const& i) const noexcept { return size_t(i.idx.value) ^ size_t(i.mesh); }
+    size_t operator()(polymesh::halfedge_handle const& i) const noexcept { return size_t(i.idx.value) ^ size_t(i.mesh); }
 };
 }
-- 
GitLab