summaryrefslogtreecommitdiffhomepage
path: root/src/load.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-01-06 15:40:03 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-01-06 15:52:39 +0900
commit2532e625edc2457447369e36e2ecf7882d872ef9 (patch)
treee772c9336baf8a3589dc0f380a2e3abd8b648b10 /src/load.c
parent111045ecada16d3c047b90a26a1ec0af06e5a323 (diff)
downloadmruby-2532e625edc2457447369e36e2ecf7882d872ef9.tar.gz
mruby-2532e625edc2457447369e36e2ecf7882d872ef9.zip
Refactor `mrb_cstr_to_dbl`; ref #4920
Diffstat (limited to 'src/load.c')
-rw-r--r--src/load.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/load.c b/src/load.c
index 4184c4753..e624c52d5 100644
--- a/src/load.c
+++ b/src/load.c
@@ -42,21 +42,17 @@ offset_crc_body(void)
}
#ifndef MRB_WITHOUT_FLOAT
+double mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck);
+
static double
str_to_double(mrb_state *mrb, const char *p, size_t len)
{
- char buf[64];
-
/* `i`, `inf`, `infinity` */
if (len > 0 && p[0] == 'i') return INFINITY;
/* `I`, `-inf`, `-infinity` */
if (p[0] == 'I' || (len > 1 && p[0] == '-' && p[1] == 'i')) return -INFINITY;
- mrb_assert(len < sizeof(buf));
- strncpy(buf, p, len);
- buf[len] = '\0';
-
- return mrb_cstr_to_dbl(mrb, buf, TRUE);
+ return mrb_str_len_to_dbl(mrb, p, len, TRUE);
}
#endif