aboutsummaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2022-12-19 14:10:58 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2022-12-20 14:12:38 +0900
commit2e7e153a2af1456515d43b6381e38534b069b1c2 (patch)
treea7c1730d6b86170e9e80f2e9705ea824ed517829 /eval.c
parent18ba89093a0b214cd89f1567c037c239f094496d (diff)
downloadruby-2e7e153a2af1456515d43b6381e38534b069b1c2.tar.gz
[Bug #19242] Prohibit circular causes to be loaded
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index e1bbf6f2c3..ff17ad343c 100644
--- a/eval.c
+++ b/eval.c
@@ -537,12 +537,16 @@ exc_setup_message(const rb_execution_context_t *ec, VALUE mesg, VALUE *cause)
}
if (!nocircular && !NIL_P(*cause) && !UNDEF_P(*cause) && *cause != mesg) {
+#if 0 /* maybe critical for some cases */
+ rb_exc_check_circular_cause(*cause);
+#else
VALUE c = *cause;
while (!NIL_P(c = rb_attr_get(c, id_cause))) {
if (c == mesg) {
rb_raise(rb_eArgError, "circular causes");
}
}
+#endif
}
return mesg;
}