summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-09-13 09:22:00 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2019-09-14 09:05:32 +0900
commit5890c7d516de1d2cbd9e577065e3cf81383e09ab (patch)
tree06da6f865f3cd3235161327b06458b8b097cbded /src
parent2fa4a55e80ceb93ea51d5d3360a614de47894595 (diff)
downloadmruby-5890c7d516de1d2cbd9e577065e3cf81383e09ab.tar.gz
mruby-5890c7d516de1d2cbd9e577065e3cf81383e09ab.zip
Remove `mrb_funcall` from `mrb_method_search`.
Diffstat (limited to 'src')
-rw-r--r--src/class.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/class.c b/src/class.c
index a551c73f6..ed45dd116 100644
--- a/src/class.c
+++ b/src/class.c
@@ -1333,6 +1333,8 @@ mrb_method_search_vm(mrb_state *mrb, struct RClass **cp, mrb_sym mid)
return m; /* no method */
}
+mrb_value mrb_mod_to_s(mrb_state *mrb, mrb_value klass);
+
MRB_API mrb_method_t
mrb_method_search(mrb_state *mrb, struct RClass* c, mrb_sym mid)
{
@@ -1340,11 +1342,8 @@ mrb_method_search(mrb_state *mrb, struct RClass* c, mrb_sym mid)
m = mrb_method_search_vm(mrb, &c, mid);
if (MRB_METHOD_UNDEF_P(m)) {
- mrb_value inspect = mrb_funcall(mrb, mrb_obj_value(c), "inspect", 0);
- if (mrb_string_p(inspect) && RSTRING_LEN(inspect) > 64) {
- inspect = mrb_any_to_s(mrb, mrb_obj_value(c));
- }
- mrb_name_error(mrb, mid, "undefined method '%n' for class %v", mid, inspect);
+ mrb_value str = mrb_mod_to_s(mrb, mrb_obj_value(c));
+ mrb_name_error(mrb, mid, "undefined method '%n' for class %v", mid, str);
}
return m;
}