summaryrefslogtreecommitdiffhomepage
path: root/src/kernel.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-04-03 10:50:31 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-04-03 10:50:31 +0900
commitf5632f2f12b7ecdfbe624d46b107a597005d25ca (patch)
tree35c3a08d2529513bc62e4b2a7375a99be862cca4 /src/kernel.c
parentd27a3d47cdd114cfcf450bf4d54664430dfce29d (diff)
downloadmruby-f5632f2f12b7ecdfbe624d46b107a597005d25ca.tar.gz
mruby-f5632f2f12b7ecdfbe624d46b107a597005d25ca.zip
Restrict recursion levels in method_missing(); fix #3556
Note this is a temporary fix. Error message generation (including `inspect`) should be deferred until its use.
Diffstat (limited to 'src/kernel.c')
-rw-r--r--src/kernel.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/kernel.c b/src/kernel.c
index 65d6213fa..8670e0651 100644
--- a/src/kernel.c
+++ b/src/kernel.c
@@ -922,7 +922,7 @@ mrb_method_missing(mrb_state *mrb, mrb_sym name, mrb_value self, mrb_value args)
/* method missing in inspect; avoid recursion */
repr = mrb_any_to_s(mrb, self);
}
- else if (mrb_respond_to(mrb, self, inspect) && mrb->c->ci - mrb->c->cibase < 64) {
+ else if (mrb_respond_to(mrb, self, inspect) && mrb->c->ci - mrb->c->cibase < 16) {
repr = mrb_funcall_argv(mrb, self, inspect, 0, 0);
if (mrb_string_p(repr) && RSTRING_LEN(repr) > 64) {
repr = mrb_any_to_s(mrb, self);