diff options
| author | nagachika <nagachika@ruby-lang.org> | 2023-03-25 11:04:33 +0900 |
|---|---|---|
| committer | nagachika <nagachika@ruby-lang.org> | 2023-03-25 11:04:33 +0900 |
| commit | 810ae06c06312908fc1a7284773d8a9101ee145b (patch) | |
| tree | 5b9dd70da37a85caac30c80e71b5dbc4efd08665 /eval.c | |
| parent | 8c99882dad0b6fedbd656889829a3780366bd8b6 (diff) | |
merge revision(s) 2e7e153a2af1456515d43b6381e38534b069b1c2: [Backport #19242]
[Bug #19242] Prohibit circular causes to be loaded
---
error.c | 4 ++++
eval.c | 4 ++++
eval_error.c | 11 +++++++++++
test/ruby/test_exception.rb | 12 ++++++++++++
4 files changed, 31 insertions(+)
Diffstat (limited to 'eval.c')
| -rw-r--r-- | eval.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -528,12 +528,16 @@ exc_setup_message(const rb_execution_context_t *ec, VALUE mesg, VALUE *cause) } if (!nocircular && !NIL_P(*cause) && *cause != Qundef && *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; } |
