From b4bb2a700a01e80beb285f2b53966dfde0bad50d Mon Sep 17 00:00:00 2001 From: cremno Date: Wed, 16 Apr 2014 20:44:07 +0200 Subject: convert exception message to string fixes: mruby -e "p ArgumentError.new(1)" --- src/error.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/error.c b/src/error.c index feec9dbc5..87e4d6412 100644 --- a/src/error.c +++ b/src/error.c @@ -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); -- cgit v1.2.3 From 36d3909e633e9dcf63f8f48c58bc8a59411c0544 Mon Sep 17 00:00:00 2001 From: cremno Date: Wed, 16 Apr 2014 20:48:39 +0200 Subject: get classname and concatenate ": " only once --- src/error.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/error.c b/src/error.c index 87e4d6412..feaa61122 100644 --- a/src/error.c +++ b/src/error.c @@ -149,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; -- cgit v1.2.3