diff -r 41a99a2a7198 Objects/bufferobject.c --- a/Objects/bufferobject.c Sat Dec 24 10:41:37 2016 +0000 +++ b/Objects/bufferobject.c Mon Dec 26 15:11:48 2016 -0500 @@ -500,14 +500,14 @@ void *p; Py_ssize_t size; - if (!get_buf(self, &p, &size, ANY_BUFFER)) - return NULL; if (PyIndex_Check(item)) { Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); if (i == -1 && PyErr_Occurred()) return NULL; if (i < 0) i += size; + if (!get_buf(self, &p, &size, ANY_BUFFER)) + return NULL; return buffer_item(self, i); } else if (PySlice_Check(item)) { @@ -518,6 +518,8 @@ return NULL; } + if (!get_buf(self, &p, &size, ANY_BUFFER)) + return NULL; if (slicelength <= 0) return PyString_FromStringAndSize("", 0); else if (step == 1)