diff -r 2f0716009132 Objects/bytearrayobject.c --- a/Objects/bytearrayobject.c Tue Jul 12 18:24:25 2016 -0400 +++ b/Objects/bytearrayobject.c Thu Jul 14 01:07:50 2016 +0800 @@ -1642,7 +1642,17 @@ Py_DECREF(item); if (len >= buf_size) { - buf_size = len + (len >> 1) + 1; + Py_ssize_t addition; + if (len == PY_SSIZE_T_MAX) { + Py_DECREF(it); + Py_DECREF(bytearray_obj); + return PyErr_NoMemory(); + } + addition = len >> 1; + if (addition > PY_SSIZE_T_MAX - len - 1) + buf_size = PY_SSIZE_T_MAX; + else + buf_size = len + addition + 1; if (PyByteArray_Resize((PyObject *)bytearray_obj, buf_size) < 0) { Py_DECREF(it); Py_DECREF(bytearray_obj);