From: Tim Peters Date: Sun, 2 Feb 2003 17:33:53 +0000 (+0000) Subject: long_from_binary_base(): Sped this a little by computing the # of bits X-Git-Tag: v2.3c1~2112 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1a3b19a6e9ac3e65fd2b648f5f2e04312afe8674;p=python long_from_binary_base(): Sped this a little by computing the # of bits needed outside the first loop. --- diff --git a/Objects/longobject.c b/Objects/longobject.c index 92e95f7867..2ccf414edb 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -1126,15 +1126,15 @@ long_from_binary_base(char **str, int base) k = ch - 'A' + 10; if (k < 0 || k >= base) break; - n += bits_per_char; - if (n < 0) { - PyErr_SetString(PyExc_ValueError, - "long string too large to convert"); - return NULL; - } ++p; } *str = p; + n = (p - start) * bits_per_char; + if (n / bits_per_char != p - start) { + PyErr_SetString(PyExc_ValueError, + "long string too large to convert"); + return NULL; + } /* n <- # of Python digits needed, = ceiling(n/SHIFT). */ n = (n + SHIFT - 1) / SHIFT; z = _PyLong_New(n);