diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-01-17 22:53:54 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-01-17 23:02:35 +0900 |
| commit | b4817a54f07f576a34a079f2e8d96f8c13611a76 (patch) | |
| tree | 6631f2aa59489b2ba139f6c02f848b67d86bd9d8 /src/numeric.c | |
| parent | 126f0f0563837c7169b7580dd5ae1ea433bd9a54 (diff) | |
| download | mruby-b4817a54f07f576a34a079f2e8d96f8c13611a76.tar.gz mruby-b4817a54f07f576a34a079f2e8d96f8c13611a76.zip | |
Make `mrb_to_flo()` to convert objects, not integer, not float; #5268
Thinking `Ratinal` and `Complex` in mind.
Diffstat (limited to 'src/numeric.c')
| -rw-r--r-- | src/numeric.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/numeric.c b/src/numeric.c index 117f447e5..146eb635b 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -39,8 +39,13 @@ mrb_to_flo(mrb_state *mrb, mrb_value val) return (mrb_float)mrb_integer(val); case MRB_TT_FLOAT: break; - default: + case MRB_TT_STRING: + case MRB_TT_FALSE: + case MRB_TT_TRUE: mrb_raise(mrb, E_TYPE_ERROR, "non float value"); + default: + val = mrb_type_convert(mrb, val, MRB_TT_FLOAT, MRB_SYM(to_f)); + break; } return mrb_float(val); } |
