Mercurial > cpython-lru_cache-weakref
diff Objects/longobject.c @ 26081:999accfa91c5 legacy-trunk
Make int("...") return a long if an int would overflow.
Also remove the 512 character limitation for int(u"...") and long(u"...").
This closes SF bug #629989.
| author | Walter Dörwald <walter@livinglogic.de> |
|---|---|
| date | Wed, 06 Nov 2002 16:15:14 +0000 |
| parents | 3a26e352f0a6 |
| children | d31ddc66b1b5 |
line wrap: on
line diff
--- a/Objects/longobject.c Wed Nov 06 15:40:05 2002 +0000 +++ b/Objects/longobject.c Wed Nov 06 16:15:14 2002 +0000 @@ -1123,17 +1123,19 @@ PyObject * PyLong_FromUnicode(Py_UNICODE *u, int length, int base) { - char buffer[256]; + PyObject *result; + char *buffer = PyMem_MALLOC(length+1); - if (length >= sizeof(buffer)) { - PyErr_SetString(PyExc_ValueError, - "long() literal too large to convert"); + if (buffer == NULL) + return NULL; + + if (PyUnicode_EncodeDecimal(u, length, buffer, NULL)) { + PyMem_FREE(buffer); return NULL; } - if (PyUnicode_EncodeDecimal(u, length, buffer, NULL)) - return NULL; - - return PyLong_FromString(buffer, NULL, base); + result = PyLong_FromString(buffer, NULL, base); + PyMem_FREE(buffer); + return result; } #endif
