diff options
Diffstat (limited to 'src/error.c')
| -rw-r--r-- | src/error.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/error.c b/src/error.c index c344509b9..64851bb56 100644 --- a/src/error.c +++ b/src/error.c @@ -122,28 +122,30 @@ static mrb_value exc_inspect(mrb_state *mrb, mrb_value exc) { mrb_value str, mesg, file, line; + mrb_bool append_mesg; mesg = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "mesg")); file = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "file")); line = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "line")); + append_mesg = !mrb_nil_p(mesg) && RSTRING_LEN(mesg) > 0; if (!mrb_nil_p(file) && !mrb_nil_p(line)) { - str = file; + str = mrb_str_dup(mrb, file); mrb_str_cat_lit(mrb, str, ":"); mrb_str_append(mrb, str, line); mrb_str_cat_lit(mrb, str, ": "); - if (!mrb_nil_p(mesg) && RSTRING_LEN(mesg) > 0) { + if (append_mesg) { mrb_str_append(mrb, str, mesg); mrb_str_cat_lit(mrb, str, " ("); } mrb_str_cat_cstr(mrb, str, mrb_obj_classname(mrb, exc)); - if (!mrb_nil_p(mesg) && RSTRING_LEN(mesg) > 0) { + if (append_mesg) { mrb_str_cat_lit(mrb, str, ")"); } } else { str = mrb_str_new_cstr(mrb, mrb_obj_classname(mrb, exc)); - if (!mrb_nil_p(mesg) && RSTRING_LEN(mesg) > 0) { + if (append_mesg) { mrb_str_cat_lit(mrb, str, ": "); mrb_str_append(mrb, str, mesg); } |
