fix bug in hb_hashmap_t has() interface

It was not working when the value type is hb_bytes_t because hb_array_t
overloaded operator &
diff --git a/src/hb-map.hh b/src/hb-map.hh
index 8302e3f..30a8e62 100644
--- a/src/hb-map.hh
+++ b/src/hb-map.hh
@@ -221,7 +221,7 @@
     unsigned int i = bucket_for (key);
     if (items[i].is_real () && items[i] == key)
     {
-      if (vp) *vp = &items[i].value;
+      if (vp) *vp = std::addressof (items[i].value);
       return true;
     }
     else
diff --git a/src/test-map.cc b/src/test-map.cc
index 357a8b0..861166e 100644
--- a/src/test-map.cc
+++ b/src/test-map.cc
@@ -240,5 +240,15 @@
     m1->set (2,4);
     assert (!m.has (p2));
   }
+  /* Test value type with hb_bytes_t. */
+  {
+    hb_hashmap_t<int, hb_bytes_t> m;
+    char c_str[] = "Test";
+    hb_bytes_t bytes (c_str, 4);
+
+    m.set (1, bytes);
+    assert (m.has (1));
+  }
+
   return 0;
 }