summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorStefan Krah <skrah@bytereef.org>2012-11-02 16:55:11 (GMT)
committerStefan Krah <skrah@bytereef.org>2012-11-02 16:55:11 (GMT)
commitc38c816ea16b37cdc07970474c2a477f216c27ce (patch)
treef7393ceaab15635326b67ce722943ab84848c61e /Objects
parent43c336b1078f531f444681f4cbe1a0db2b85a6d9 (diff)
parent4af77a027680f2aa956a4d1c50947d6e2dbd0185 (diff)
downloadcpython-c38c816ea16b37cdc07970474c2a477f216c27ce.zip
cpython-c38c816ea16b37cdc07970474c2a477f216c27ce.tar.gz
cpython-c38c816ea16b37cdc07970474c2a477f216c27ce.tar.bz2
Merge 3.3.
Diffstat (limited to 'Objects')
-rw-r--r--Objects/memoryobject.c8
1 files changed, 8 insertions, 0 deletions
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 @@ memory_hash(PyMemoryViewObject *self)
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 @@ memory_hash(PyMemoryViewObject *self)
"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;