]> granicus.if.org Git - python/commitdiff
Handle PyMem_Malloc failure in pystrtod.c. Closes #1494671.
authorGeorg Brandl <georg@python.org>
Mon, 29 May 2006 14:28:05 +0000 (14:28 +0000)
committerGeorg Brandl <georg@python.org>
Mon, 29 May 2006 14:28:05 +0000 (14:28 +0000)
Python/pystrtod.c

index 8a71c285a97d8182f7da4c65d6a26484a9f84d41..53d6325f89bb13b2e8caa4902292729f8b8d52f0 100644 (file)
@@ -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 @@ PyOS_ascii_strtod(const char *nptr, char **endptr)
 
                /* 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);