summaryrefslogtreecommitdiff
path: root/eval_error.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-07 05:38:37 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-07 05:38:37 +0000
commit89f041957548302af46d71e3c97fa58415677c8a ()
treebd458239934fc1c7a5ae17e3dcba270a891be1ed /eval_error.c
parentac4d348d458defd030c548f608e0b0882a9c705a (diff)
eval_error.c: reset in each line
* eval_error.c (print_errinfo): reset in each line, so that Exception#full_message ends with a newline and puts will not print an extra newline. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61650 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--eval_error.c31
1 files changed, 24 insertions, 7 deletions
@@ -109,7 +109,9 @@ print_errinfo(const VALUE eclass, const VALUE errat, const VALUE emesg, const VA
if (eclass == rb_eRuntimeError && elen == 0) {
if (highlight) write_warn(str, underline);
- write_warn(str, "unhandled exception\n");
}
else {
VALUE epath;
@@ -118,34 +120,49 @@ print_errinfo(const VALUE eclass, const VALUE errat, const VALUE emesg, const VA
if (elen == 0) {
if (highlight) write_warn(str, underline);
write_warn_str(str, epath);
write_warn(str, "\n");
}
else {
const char *tail = 0;
long len = elen;
if (RSTRING_PTR(epath)[0] == '#')
epath = 0;
if ((tail = memchr(einfo, '\n', elen)) != 0) {
len = tail - einfo;
tail++; /* skip newline */
}
- write_warn_str(str, tail ? rb_str_subseq(emesg, 0, len) : emesg);
if (epath) {
write_warn(str, " (");
if (highlight) write_warn(str, underline);
write_warn_str(str, epath);
if (highlight) write_warn(str, reset);
- if (highlight) write_warn(str, bold);
- write_warn(str, ")\n");
}
if (tail) {
- write_warn_str(str, rb_str_subseq(emesg, tail - einfo, elen - len - 1));
}
- if (tail ? einfo[elen-1] != '\n' : !epath) write_warn2(str, "\n", 1);
}
}
- if (highlight) write_warn(str, reset);
}
static void