diff -r 0cb037bb0f9a Objects/bytearrayobject.c --- a/Objects/bytearrayobject.c Mon May 25 21:24:00 2015 -0500 +++ b/Objects/bytearrayobject.c Tue Jun 23 10:04:59 2015 +0200 @@ -2305,8 +2305,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; } @@ -2314,7 +2314,7 @@ return NULL; value = self->ob_bytes[where]; - memmove(self->ob_bytes + where, self->ob_bytes + where + 1, n - where); + memmove(self->ob_bytes + where, self->ob_bytes + where + 1, n - where - 1); if (PyByteArray_Resize((PyObject *)self, n - 1) < 0) return NULL; @@ -2345,7 +2345,7 @@ if (!_canresize(self)) return NULL; - memmove(self->ob_bytes + where, self->ob_bytes + where + 1, n - where); + memmove(self->ob_bytes + where, self->ob_bytes + where + 1, n - where - 1); if (PyByteArray_Resize((PyObject *)self, n - 1) < 0) return NULL;