Use `mrb_to_flo()` to check return value from `to_f`; fix #4115

The ISO standard does not include implicit type conversion using
`to_int`, `to_str` and sometimes `to_f`. For the compactness of the
mruby implementation, maybe we should remove those implicit conversion
from mruby.
parent e9b1d9dc
...@@ -1127,7 +1127,8 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary) ...@@ -1127,7 +1127,8 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary)
#ifndef MRB_WITHOUT_FLOAT #ifndef MRB_WITHOUT_FLOAT
} else if (type == PACK_TYPE_FLOAT) { } else if (type == PACK_TYPE_FLOAT) {
if (!mrb_float_p(o)) { if (!mrb_float_p(o)) {
o = mrb_funcall(mrb, o, "to_f", 0); mrb_float f = mrb_to_flo(mrb, o);
o = mrb_float_value(mrb, f);
} }
#endif #endif
} else if (type == PACK_TYPE_STRING) { } else if (type == PACK_TYPE_STRING) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment