Merge pull request #2068 from cremno/exc_inspect-convert-mesg-to-string

convert exception message to string
This commit is contained in:
Yukihiro "Matz" Matsumoto
2014-04-17 07:54:34 +09:00
+10 -5
View File
@@ -127,7 +127,12 @@ exc_inspect(mrb_state *mrb, mrb_value exc)
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;
append_mesg = !mrb_nil_p(mesg);
if (append_mesg) {
mesg = mrb_obj_as_string(mrb, mesg);
append_mesg = RSTRING_LEN(mesg) > 0;
}
if (!mrb_nil_p(file) && !mrb_nil_p(line)) {
str = mrb_str_dup(mrb, file);
@@ -144,14 +149,14 @@ exc_inspect(mrb_state *mrb, mrb_value exc)
}
}
else {
str = mrb_str_new_cstr(mrb, mrb_obj_classname(mrb, exc));
const char *cname = mrb_obj_classname(mrb, exc);
str = mrb_str_new_cstr(mrb, cname);
mrb_str_cat_lit(mrb, str, ": ");
if (append_mesg) {
mrb_str_cat_lit(mrb, str, ": ");
mrb_str_append(mrb, str, mesg);
}
else {
mrb_str_cat_lit(mrb, str, ": ");
mrb_str_cat_cstr(mrb, str, mrb_obj_classname(mrb, exc));
mrb_str_cat_cstr(mrb, str, cname);
}
}
return str;