diff options
author | Georg Brandl <georg@python.org> | 2006-05-29 14:28:05 +0000 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2006-05-29 14:28:05 +0000 |
commit | b569ee4863bebac6a8c3437563f30f1acd4f34cc (patch) | |
tree | fe4588b5d9803c00052660342fbc96bb96573f88 /Python/pystrtod.c | |
parent | a1121fa9350f16bbae18b66b8c3825fd5e4706f6 (diff) | |
download | cpython-git-b569ee4863bebac6a8c3437563f30f1acd4f34cc.tar.gz |
Handle PyMem_Malloc failure in pystrtod.c. Closes #1494671.
Diffstat (limited to 'Python/pystrtod.c')
-rw-r--r-- | Python/pystrtod.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Python/pystrtod.c b/Python/pystrtod.c index 8a71c285a9..53d6325f89 100644 --- a/Python/pystrtod.c +++ b/Python/pystrtod.c @@ -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); |