diff -r 19488e23dcdb Objects/longobject.c --- a/Objects/longobject.c Fri Jun 03 10:48:43 2016 +0300 +++ b/Objects/longobject.c Fri Jun 03 23:48:25 2016 +0300 @@ -4152,17 +4152,17 @@ /* Implement ~x as -(x+1) */ PyLongObject *x; PyLongObject *w; - if (Py_ABS(Py_SIZE(v)) <=1) - return PyLong_FromLong(-(MEDIUM_VALUE(v)+1)); + if (Py_ABS(Py_SIZE(v)) <= 1) + return PyLong_FromLong(-(MEDIUM_VALUE(v) + 1)); w = (PyLongObject *)PyLong_FromLong(1L); if (w == NULL) return NULL; - x = (PyLongObject *) long_add(v, w); + x = (PyLongObject *)long_add(v, w); Py_DECREF(w); if (x == NULL) return NULL; - Py_SIZE(x) = -(Py_SIZE(x)); - return (PyObject *)maybe_small_long(x); + _PyLong_Negate(&x); + return (PyObject *)x; } static PyObject *