Issue #15814: Use hash function that is compatible with the equality
definition from #15573.
diff --git a/Objects/memoryobject.c b/Objects/memoryobject.c
index d56faf8..dd6fe82 100644
--- a/Objects/memoryobject.c
+++ b/Objects/memoryobject.c
@@ -2707,6 +2707,8 @@
     if (self->hash == -1) {
         Py_buffer *view = &self->view;
         char *mem = view->buf;
+        Py_ssize_t ret;
+        char fmt;
 
         CHECK_RELEASED_INT(self);
 
@@ -2715,6 +2717,12 @@
                 "cannot hash writable memoryview object");
             return -1;
         }
+        ret = get_native_fmtchar(&fmt, view->format);
+        if (ret < 0 || !IS_BYTE_FORMAT(fmt)) {
+            PyErr_SetString(PyExc_ValueError,
+                "memoryview: hashing is restricted to formats 'B', 'b' or 'c'");
+            return -1;
+        }
         if (view->obj != NULL && PyObject_Hash(view->obj) == -1) {
             /* Keep the original error message */
             return -1;