summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-07-17 01:42:03 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-07-17 01:42:03 +0900
commit1dc6a8c8727f3e81720e768d7382a58849fa9bfa (patch)
treea6d8d4e2a1d4b6566b8a32846d64a365801630fc
parent2dcc2444fa7a6a332267fc4e06f487472133e0b0 (diff)
downloadmruby-1dc6a8c8727f3e81720e768d7382a58849fa9bfa.tar.gz
mruby-1dc6a8c8727f3e81720e768d7382a58849fa9bfa.zip
avoid infinite recursion when error was happened in #inspect; fix #2474
-rw-r--r--src/class.c2
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);