From 028e34d3452acd1eb5602b78ff5c52f4dbb8a1eb Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 1 May 2018 17:21:01 +0900 Subject: Update `MRB_FLO_TO_STR_FMT` to "%.16g"; fix #4016 --- mrbgems/mruby-compiler/core/codegen.c | 12 +++++++++--- src/numeric.c | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index b9451fb88..f71de9b4b 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -3049,8 +3049,8 @@ loop_pop(codegen_scope *s, int val) if (val) push(); } -MRB_API struct RProc* -mrb_generate_code(mrb_state *mrb, parser_state *p) +static struct RProc* +generate_code(mrb_state *mrb, parser_state *p, int val) { codegen_scope *scope = scope_new(mrb, 0, 0); struct RProc *proc; @@ -3067,7 +3067,7 @@ mrb_generate_code(mrb_state *mrb, parser_state *p) MRB_TRY(&scope->jmp) { mrb->jmp = &scope->jmp; /* prepare irep */ - codegen(scope, p->tree, NOVAL); + codegen(scope, p->tree, val); proc = mrb_proc_new(mrb, scope->irep); mrb_irep_decref(mrb, scope->irep); mrb_pool_close(scope->mpool); @@ -3086,3 +3086,9 @@ mrb_generate_code(mrb_state *mrb, parser_state *p) } MRB_END_EXC(&scope->jmp); } + +MRB_API struct RProc* +mrb_generate_code(mrb_state *mrb, parser_state *p) +{ + return generate_code(mrb, p, VAL); +} diff --git a/src/numeric.c b/src/numeric.c index b898fd0b5..4e5fc394e 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -23,9 +23,9 @@ #define floor(f) floorf(f) #define ceil(f) ceilf(f) #define fmod(x,y) fmodf(x,y) -#define MRB_FLO_TO_STR_FMT "%.7g" +#define MRB_FLO_TO_STR_FMT "%.8g" #else -#define MRB_FLO_TO_STR_FMT "%.14g" +#define MRB_FLO_TO_STR_FMT "%.16g" #endif #endif -- cgit v1.2.3