summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-12-29 16:21:29 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-12-29 16:21:29 +0900
commitb6283978c586702e1b2ff182b83ceb3e2bf691b3 (patch)
tree2c50610fa4fab5d55d2c8fd59e572ff6b0435d7b /src
parent41e8b210b82fc5a0bc6f0b2989b34e0391fac2ae (diff)
downloadmruby-b6283978c586702e1b2ff182b83ceb3e2bf691b3.tar.gz
mruby-b6283978c586702e1b2ff182b83ceb3e2bf691b3.zip
object.c: avoid implicit `to_i` and `to_f` calls.
mruby have removed `to_int` implicit conversion, so `mrb_to_integer` should not call `to_i` for conversion.
Diffstat (limited to 'src')
-rw-r--r--src/object.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/object.c b/src/object.c
index de0298fab..44af8f745 100644
--- a/src/object.c
+++ b/src/object.c
@@ -487,17 +487,13 @@ mrb_obj_is_kind_of(mrb_state *mrb, mrb_value obj, struct RClass *c)
MRB_API mrb_value
mrb_to_integer(mrb_state *mrb, mrb_value val)
{
-
if (!mrb_integer_p(val)) {
#ifndef MRB_NO_FLOAT
if (mrb_float_p(val)) {
return mrb_float_to_integer(mrb, val);
}
#endif
- if (mrb_string_p(val)) {
- mrb_raise(mrb, E_TYPE_ERROR, "can't convert String to Integer");
- }
- return mrb_type_convert(mrb, val, MRB_TT_INTEGER, MRB_SYM(to_i));
+ mrb_raisef(mrb, E_TYPE_ERROR, "%Y cannot be converted to Integer", val);
}
return val;
}
@@ -520,7 +516,9 @@ mrb_to_float(mrb_state *mrb, mrb_value val)
return mrb_float_value(mrb, mrb_str_to_dbl(mrb, val, TRUE));
default:
- return mrb_type_convert(mrb, val, MRB_TT_FLOAT, MRB_SYM(to_f));
+ mrb_raisef(mrb, E_TYPE_ERROR, "%Y cannot be converted to Float", val);
+ /* not reached */
+ return val;
}
}
#endif