From ccf28775b896e7cf772657eacd8727de25c3a0f4 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 6 Jan 2020 15:47:19 +0900 Subject: Fix `mrb_str_len_to_dbl` to support Hexadecimal like `0x10`. --- src/string.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/string.c') diff --git a/src/string.c b/src/string.c index 15e52fb3c..7b6a11a6f 100644 --- a/src/string.c +++ b/src/string.c @@ -2503,8 +2503,15 @@ mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck) while (ISSPACE(*s)) s++; p = s; - if (!badcheck && p[0] == '0' && (p[1] == 'x' || p[1] == 'X')) { - return 0.0; + if (p[0] == '0' && (p[1] == 'x' || p[1] == 'X')) { + mrb_value x; + + x = mrb_str_len_to_inum(mrb, p, pend-p, 0, badcheck); + if (mrb_fixnum_p(x)) + d = (double)mrb_fixnum(x); + else /* if (mrb_float_p(x)) */ + d = mrb_float(x); + return d; } while (p < pend) { if (!*p) { -- cgit v1.2.3