diff -r ae5a4527f1fc Objects/bytearrayobject.c --- a/Objects/bytearrayobject.c Sun Jun 21 17:11:21 2015 +0300 +++ b/Objects/bytearrayobject.c Tue Jun 23 10:10:46 2015 +0200 @@ -2388,8 +2388,8 @@ return NULL; } if (where < 0) - where += Py_SIZE(self); - if (where < 0 || where >= Py_SIZE(self)) { + where += n; + if (where < 0 || where >= n) { PyErr_SetString(PyExc_IndexError, "pop index out of range"); return NULL; } @@ -2398,7 +2398,7 @@ buf = PyByteArray_AS_STRING(self); value = buf[where]; - memmove(buf + where, buf + where + 1, n - where); + memmove(buf + where, buf + where + 1, n - where - 1); if (PyByteArray_Resize((PyObject *)self, n - 1) < 0) return NULL; @@ -2430,7 +2430,7 @@ if (!_canresize(self)) return NULL; - memmove(buf + where, buf + where + 1, n - where); + memmove(buf + where, buf + where + 1, n - where - 1); if (PyByteArray_Resize((PyObject *)self, n - 1) < 0) return NULL;