diff -r 5b0fda8f5718 Objects/longobject.c --- a/Objects/longobject.c Fri May 02 22:31:14 2014 +0200 +++ b/Objects/longobject.c Fri May 02 22:39:49 2014 +0200 @@ -180,8 +180,8 @@ PyLongObject * #define MAX_LONG_DIGITS \ ((PY_SSIZE_T_MAX - offsetof(PyLongObject, ob_digit))/sizeof(digit)) -PyLongObject * -_PyLong_New(Py_ssize_t size) +static PyLongObject * +long_alloc(Py_ssize_t size, int use_calloc) { PyLongObject *result; /* Number of bytes needed is: offsetof(PyLongObject, ob_digit) + @@ -203,6 +203,12 @@ PyLongObject * return (PyLongObject*)PyObject_INIT_VAR(result, &PyLong_Type, size); } +PyLongObject * +_PyLong_New(Py_ssize_t size) +{ + return long_alloc(size, 0); +} + PyObject * _PyLong_Copy(PyLongObject *src) { @@ -4126,15 +4132,13 @@ long_lshift(PyObject *v, PyObject *w) newsize = oldsize + wordshift; if (remshift) ++newsize; - z = _PyLong_New(newsize); + z = long_alloc(newsize, 1); if (z == NULL) return NULL; if (Py_SIZE(a) < 0) { assert(Py_REFCNT(z) == 1); Py_SIZE(z) = -Py_SIZE(z); } - for (i = 0; i < wordshift; i++) - z->ob_digit[i] = 0; accum = 0; for (i = wordshift, j = 0; j < oldsize; i++, j++) { accum |= (twodigits)a->ob_digit[j] << remshift;

AltStyle によって変換されたページ (->オリジナル) /