diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-11-07 15:50:11 -0800 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-11-07 15:50:11 -0800 |
| commit | 4e03a0caaeb136f5787db65204377442938c0a85 (patch) | |
| tree | ce0321e11bfa01a04073ee3cc0b16045ac58cf48 | |
| parent | b777850c7856ee069603d8f9dd156c38926c2610 (diff) | |
| parent | 03b74a6c4825fb7b801cb19d84105cb260391c8b (diff) | |
| download | mruby-4e03a0caaeb136f5787db65204377442938c0a85.tar.gz mruby-4e03a0caaeb136f5787db65204377442938c0a85.zip | |
Merge pull request #535 from iij/pr-fix-broken-error-message
fix broken error message
| -rw-r--r-- | src/class.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/class.c b/src/class.c index 7f11dc25c..816c3d03a 100644 --- a/src/class.c +++ b/src/class.c @@ -852,9 +852,12 @@ mrb_method_search(mrb_state *mrb, struct RClass* c, mrb_sym mid) m = mrb_method_search_vm(mrb, &c, mid); if (!m) { + mrb_value inspect = mrb_funcall(mrb, mrb_obj_value(c), "inspect", 0); + if (RSTRING_LEN(inspect) > 64) { + inspect = mrb_any_to_s(mrb, mrb_obj_value(c)); + } mrb_raisef(mrb, E_NAME_ERROR, "undefined method '%s' for class %s", - mrb_sym2name(mrb, mid), - RSTRING_PTR(mrb_funcall(mrb, mrb_obj_value(c), "inspect", 0))); + mrb_sym2name(mrb, mid), RSTRING_PTR(inspect)); } return m; } @@ -1010,9 +1013,14 @@ mrb_bob_missing(mrb_state *mrb, mrb_value mod) if (!mrb_symbol_p(name)) { mrb_raise(mrb, E_TYPE_ERROR, "name should be a symbol"); } + + mrb_value inspect = mrb_funcall(mrb, mod, "inspect", 0); + if (RSTRING_LEN(inspect) > 64) { + inspect = mrb_any_to_s(mrb, mod); + } + mrb_raisef(mrb, E_NOMETHOD_ERROR, "undefined method '%s' for %s", - mrb_sym2name(mrb, mrb_symbol(name)), - RSTRING_PTR(mrb_funcall(mrb, mod, "inspect", 0))); + mrb_sym2name(mrb, mrb_symbol(name)), RSTRING_PTR(inspect)); /* not reached */ return mrb_nil_value(); } |
