diff Python/pystrtod.c @ 38480:9b001ebeaa5e legacy-trunk

Handle PyMem_Malloc failure in pystrtod.c. Closes #1494671.
author Georg Brandl <georg@python.org>
date Mon, 29 May 2006 14:28:05 +0000
parents 3d477d158401
children 3d1a99b39fca
line wrap: on
line diff
--- a/Python/pystrtod.c	Mon May 29 14:13:21 2006 +0000
+++ b/Python/pystrtod.c	Mon May 29 14:28:05 2006 +0000
@@ -31,6 +31,7 @@
  * is returned (according to the sign of the value), and %ERANGE is
  * stored in %errno. If the correct value would cause underflow,
  * zero is returned and %ERANGE is stored in %errno.
+ * If memory allocation fails, %ENOMEM is stored in %errno.
  * 
  * This function resets %errno before calling strtod() so that
  * you can reliably detect overflow and underflow.
@@ -102,6 +103,12 @@
 
 		/* We need to convert the '.' to the locale specific decimal point */
 		copy = (char *)PyMem_MALLOC(end - nptr + 1 + decimal_point_len);
+		if (copy == NULL) {
+			if (endptr)
+				*endptr = nptr;
+			errno = ENOMEM;
+			return val;
+		}
 
 		c = copy;
 		memcpy(c, nptr, decimal_point_pos - nptr);