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