@@ -200,6 +200,7 @@ print_errinfo(const VALUE eclass, const VALUE errat, const VALUE emesg, const VA
200
200
else {
201
201
elen -= tail - einfo ;
202
202
einfo = tail ;
203
+ write_warn2 (str , "\n" , 1 );
203
204
while (elen > 0 ) {
204
205
tail = memchr (einfo , '\n' , elen );
205
206
if (!tail || tail > einfo ) {
@@ -300,10 +301,10 @@ show_cause(VALUE errinfo, VALUE str, VALUE highlight, VALUE reverse, long backtr
300
301
if (reverse ) {
301
302
show_cause (cause , str , highlight , reverse , backtrace_limit , shown_causes );
302
303
print_backtrace (eclass , errat , str , TRUE, backtrace_limit );
303
- print_errinfo (eclass , errat , emesg , str , highlight != 0 );
304
+ print_errinfo (eclass , errat , emesg , str , RTEST ( highlight ) );
304
305
}
305
306
else {
306
- print_errinfo (eclass , errat , emesg , str , highlight != 0 );
307
+ print_errinfo (eclass , errat , emesg , str , RTEST ( highlight ) );
307
308
print_backtrace (eclass , errat , str , FALSE, backtrace_limit );
308
309
show_cause (cause , str , highlight , reverse , backtrace_limit , shown_causes );
309
310
}
@@ -324,19 +325,14 @@ rb_error_write(VALUE errinfo, VALUE emesg, VALUE errat, VALUE str, VALUE highlig
324
325
errat = Qnil ;
325
326
}
326
327
eclass = CLASS_OF (errinfo );
327
- if (NIL_P (reverse )) reverse = Qfalse ;
328
- if (NIL_P (highlight )) {
329
- VALUE tty = (VALUE )rb_stderr_tty_p ();
330
- if (NIL_P (highlight )) highlight = tty ;
331
- }
332
328
if (reverse ) {
333
329
static const char traceback [] = "Traceback "
334
330
"(most recent call last):\n" ;
335
331
const int bold_part = rb_strlen_lit ("Traceback" );
336
332
char buff [sizeof (traceback )+ sizeof (bold )+ sizeof (reset )- 2 ], * p = buff ;
337
333
const char * msg = traceback ;
338
334
long len = sizeof (traceback ) - 1 ;
339
- if (highlight ) {
335
+ if (RTEST ( highlight ) ) {
340
336
#define APPEND (s , l ) (memcpy(p, s, l), p += (l))
341
337
APPEND (bold , sizeof (bold )- 1 );
342
338
APPEND (traceback , bold_part );
@@ -348,10 +344,10 @@ rb_error_write(VALUE errinfo, VALUE emesg, VALUE errat, VALUE str, VALUE highlig
348
344
write_warn2 (str , msg , len );
349
345
show_cause (errinfo , str , highlight , reverse , backtrace_limit , & shown_causes );
350
346
print_backtrace (eclass , errat , str , TRUE, backtrace_limit );
351
- print_errinfo (eclass , errat , emesg , str , highlight != 0 );
347
+ print_errinfo (eclass , errat , emesg , str , RTEST ( highlight ) );
352
348
}
353
349
else {
354
- print_errinfo (eclass , errat , emesg , str , highlight != 0 );
350
+ print_errinfo (eclass , errat , emesg , str , RTEST ( highlight ) );
355
351
print_backtrace (eclass , errat , str , FALSE, backtrace_limit );
356
352
show_cause (errinfo , str , highlight , reverse , backtrace_limit , & shown_causes );
357
353
}
@@ -380,7 +376,8 @@ rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo)
380
376
381
377
if (!written ) {
382
378
written = true;
383
- rb_error_write (errinfo , emesg , errat , Qnil , Qnil , Qfalse );
379
+ VALUE highlight = rb_stderr_tty_p () ? Qtrue : Qfalse ;
380
+ rb_error_write (errinfo , emesg , errat , Qnil , highlight , Qfalse );
384
381
}
385
382
386
383
EC_POP_TAG ();
0 commit comments