diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-07-17 01:42:03 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-07-17 01:42:03 +0900 |
| commit | 1dc6a8c8727f3e81720e768d7382a58849fa9bfa (patch) | |
| tree | a6d8d4e2a1d4b6566b8a32846d64a365801630fc | |
| parent | 2dcc2444fa7a6a332267fc4e06f487472133e0b0 (diff) | |
| download | mruby-1dc6a8c8727f3e81720e768d7382a58849fa9bfa.tar.gz mruby-1dc6a8c8727f3e81720e768d7382a58849fa9bfa.zip | |
avoid infinite recursion when error was happened in #inspect; fix #2474
| -rw-r--r-- | src/class.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/class.c b/src/class.c index 2b42a6a92..bae69df24 100644 --- a/src/class.c +++ b/src/class.c @@ -1206,7 +1206,7 @@ mrb_bob_missing(mrb_state *mrb, mrb_value mod) /* method missing in inspect; avoid recursion */ repr = mrb_any_to_s(mrb, mod); } - else if (mrb_respond_to(mrb, mod, inspect)) { + else if (mrb_respond_to(mrb, mod, inspect) && mrb->c->ci - mrb->c->cibase < 64) { repr = mrb_funcall_argv(mrb, mod, inspect, 0, 0); if (RSTRING_LEN(repr) > 64) { repr = mrb_any_to_s(mrb, mod); |
