]> granicus.if.org Git - python/commitdiff
Replace SIGFPE paranoia around strtod and atof. I don't believe these
authorTim Peters <tim.peters@gmail.com>
Mon, 25 Sep 2000 21:01:28 +0000 (21:01 +0000)
committerTim Peters <tim.peters@gmail.com>
Mon, 25 Sep 2000 21:01:28 +0000 (21:01 +0000)
fncs are allowed to raise SIGFPE (see the C std), but OK by me if
people using --with-fpectl want to pay for checking anyway.

Objects/floatobject.c

index 168cbcd0e8590719cad7e165068d0a2adc3cf0fa..004cf5747aade49b06f8ab5fe7f576dbb48e84d8 100644 (file)
@@ -182,7 +182,9 @@ PyFloat_FromString(PyObject *v, char **pend)
         * whether strtod sets errno on underflow is not defined, so we can't
         * key off errno.
          */
+       PyFPE_START_PROTECT("strtod", return NULL)
        x = strtod(s, (char **)&end);
+       PyFPE_END_PROTECT(x)
        errno = 0;
        /* Believe it or not, Solaris 2.6 can move end *beyond* the null
           byte at the end of the string, when the input is inf(inity). */
@@ -210,7 +212,9 @@ PyFloat_FromString(PyObject *v, char **pend)
        if (x == 0.0) {
                /* See above -- may have been strtod being anal
                   about denorms. */
+               PyFPE_START_PROTECT("atof", return NULL)
                x = atof(s);
+               PyFPE_END_PROTECT(x)
                errno = 0;    /* whether atof ever set errno is undefined */
        }
        return PyFloat_FromDouble(x);