diff options
Diffstat (limited to 'eval_error.c')
-rw-r--r-- | eval_error.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/eval_error.c b/eval_error.c index e8a7243b96..1e6579c8a0 100644 --- a/eval_error.c +++ b/eval_error.c @@ -362,6 +362,7 @@ rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo) volatile uint8_t raised_flag = ec->raised_flag; volatile VALUE errat = Qundef; volatile VALUE emesg = Qundef; + volatile bool written = false; if (NIL_P(errinfo)) return; @@ -376,7 +377,10 @@ rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo) emesg = rb_get_message(errinfo); } - rb_error_write(errinfo, emesg, errat, Qnil, Qnil, Qfalse); + if (!written) { + written = true; + rb_error_write(errinfo, emesg, errat, Qnil, Qnil, Qfalse); + } EC_POP_TAG(); ec->errinfo = errinfo; |