From 7f40b645d2773c8f50c48ae4adf90488e164da55 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 31 Dec 2021 10:26:58 +0900 Subject: numeric.c: `mrb_as_float` should not call `to_f` for generic objects. It should only call `to_f` for Rational and Complex numbers. Ref #5540 #5613 #5620 --- src/numeric.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/numeric.c b/src/numeric.c index fd9f5ce2c..a3021b19e 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -29,13 +29,13 @@ mrb_as_float(mrb_state *mrb, mrb_value val) return (mrb_float)mrb_integer(val); case MRB_TT_FLOAT: break; - case MRB_TT_STRING: - case MRB_TT_FALSE: - case MRB_TT_TRUE: - mrb_raise(mrb, E_TYPE_ERROR, "non float value"); - default: + case MRB_TT_RATIONAL: + case MRB_TT_COMPLEX: val = mrb_type_convert(mrb, val, MRB_TT_FLOAT, MRB_SYM(to_f)); break; + default: + mrb_raise(mrb, E_TYPE_ERROR, "non float value"); + break; } return mrb_float(val); } -- cgit v1.2.3