From 7a8ed0fa3a46eb0716345eefe1408c80e4443210 Mon Sep 17 00:00:00 2001 From: cremno Date: Mon, 14 Apr 2014 03:52:17 +0200 Subject: exc_inspect: dup file and check mesg only once --- src/error.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/error.c') 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); } -- cgit v1.2.3