Commit 2a76532f authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #2060 from cremno/exc_inspect-dup-file

exc_inspect: dup file and check mesg only once
parents 636addd6 7a8ed0fa
...@@ -122,28 +122,30 @@ static mrb_value ...@@ -122,28 +122,30 @@ static mrb_value
exc_inspect(mrb_state *mrb, mrb_value exc) exc_inspect(mrb_state *mrb, mrb_value exc)
{ {
mrb_value str, mesg, file, line; mrb_value str, mesg, file, line;
mrb_bool append_mesg;
mesg = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "mesg")); mesg = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "mesg"));
file = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "file")); file = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "file"));
line = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "line")); 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)) { 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_cat_lit(mrb, str, ":");
mrb_str_append(mrb, str, line); mrb_str_append(mrb, str, line);
mrb_str_cat_lit(mrb, str, ": "); 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_append(mrb, str, mesg);
mrb_str_cat_lit(mrb, str, " ("); mrb_str_cat_lit(mrb, str, " (");
} }
mrb_str_cat_cstr(mrb, str, mrb_obj_classname(mrb, exc)); 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, ")"); mrb_str_cat_lit(mrb, str, ")");
} }
} }
else { else {
str = mrb_str_new_cstr(mrb, mrb_obj_classname(mrb, exc)); 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_cat_lit(mrb, str, ": ");
mrb_str_append(mrb, str, mesg); mrb_str_append(mrb, str, mesg);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment