diff options
| author | Mark Dickinson <mdickinson@enthought.com> | 2012-01-27 21:16:01 +0000 |
|---|---|---|
| committer | Mark Dickinson <mdickinson@enthought.com> | 2012-01-27 21:16:01 +0000 |
| commit | cc0cabdf51fa0fdbdf7da71992b9d0804dea2614 (patch) | |
| tree | c6f75a466c8a6d00f904b87c3f0f92558f353989 /Objects/floatobject.c | |
| parent | a8345b08eaf65a83224d8792995d7a2f800086b3 (diff) | |
| download | cpython-cc0cabdf51fa0fdbdf7da71992b9d0804dea2614.tar.gz | |
Issue #13889: Add missing _Py_SET_53BIT_PRECISION_* calls around uses of dtoa.c functions in float round.
Diffstat (limited to 'Objects/floatobject.c')
| -rw-r--r-- | Objects/floatobject.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 09c0e961ba..e146a4fc7c 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -919,9 +919,12 @@ double_round(double x, int ndigits) { char *buf, *buf_end, shortbuf[100], *mybuf=shortbuf; int decpt, sign; PyObject *result = NULL; + _Py_SET_53BIT_PRECISION_HEADER; /* round to a decimal string */ + _Py_SET_53BIT_PRECISION_START; buf = _Py_dg_dtoa(x, 3, ndigits, &decpt, &sign, &buf_end); + _Py_SET_53BIT_PRECISION_END; if (buf == NULL) { PyErr_NoMemory(); return NULL; @@ -944,7 +947,9 @@ double_round(double x, int ndigits) { /* and convert the resulting string back to a double */ errno = 0; + _Py_SET_53BIT_PRECISION_START; rounded = _Py_dg_strtod(mybuf, NULL); + _Py_SET_53BIT_PRECISION_END; if (errno == ERANGE && fabs(rounded) >= 1.) PyErr_SetString(PyExc_OverflowError, "rounded value too large to represent"); |
