diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-12-31 10:26:58 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-12-31 10:54:28 +0900 |
| commit | 7f40b645d2773c8f50c48ae4adf90488e164da55 (patch) | |
| tree | bd4041653a38c7d4b975fe869043b756b105d2a8 /src/numeric.c | |
| parent | eea418bcceba5091b19033f5555ca76cc0f15d0f (diff) | |
| download | mruby-7f40b645d2773c8f50c48ae4adf90488e164da55.tar.gz mruby-7f40b645d2773c8f50c48ae4adf90488e164da55.zip | |
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
Diffstat (limited to 'src/numeric.c')
| -rw-r--r-- | src/numeric.c | 10 |
1 files 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); } |
