From 17acf239141d7615f0d7e2938744c0bce2010fea Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 23 Sep 2024 08:11:23 +0900 Subject: [PATCH] readfloat.c: we don't need `long double` for mruby; fix #6365 `mrb_read_float()` function does not raise ERANGE (unlike `strtod()`) so we don't need high precision double for calculation. --- src/readfloat.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/readfloat.c b/src/readfloat.c index 7c42efbcd..9886c1580 100644 --- a/src/readfloat.c +++ b/src/readfloat.c @@ -10,7 +10,7 @@ mrb_read_float(const char *str, char **endp, double *fp) { const char *p = str; const char *a = p; - long double res = 0.0, frac = 0.0, div = 1.0; + double res = 0.0, frac = 0.0, div = 1.0; int sign = 1; int digits = 0; @@ -66,7 +66,7 @@ mrb_read_float(const char *str, char **endp, double *fp) e = e * 10 + (*p - '0'); p++; } - res *= powl(10.0, sign * e); + res *= pow(10.0, sign * e); a = p; } @@ -79,7 +79,7 @@ mrb_read_float(const char *str, char **endp, double *fp) // mruby does not require those checks #if 0 // Check for underflow after applying the exponent - if (res != 0.0 && fabsl(res) < (long double)DBL_MIN) { + if (res != 0.0 && fabs(res) < DBL_MIN) { return FALSE; }