diff --git a/eval.c b/eval.c index adacde9e2f..6fc3969690 100644 --- a/eval.c +++ b/eval.c @@ -645,6 +645,10 @@ rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause) cause = get_ec_errinfo(ec); } if (cause != mesg) { + if (THROW_DATA_P(cause)) { + cause = Qnil; + } + rb_ivar_set(mesg, id_cause, cause); } }