From 2930bc50a92bd66da0969a3362086e8d309a2b3d Mon Sep 17 00:00:00 2001 From: Masaki Muranaka Date: Tue, 19 Mar 2013 10:32:59 +0900 Subject: Use mrb_true_or_false_value() / in exc_equal(). --- src/error.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'src/error.c') diff --git a/src/error.c b/src/error.c index ddf92382b..e86e3f22c 100644 --- a/src/error.c +++ b/src/error.c @@ -160,25 +160,29 @@ exc_equal(mrb_state *mrb, mrb_value exc) { mrb_value obj; mrb_value mesg; + mrb_bool equal_p; mrb_sym id_mesg = mrb_intern(mrb, "mesg"); mrb_get_args(mrb, "o", &obj); - if (mrb_obj_equal(mrb, exc, obj)) return mrb_true_value(); - - if (mrb_obj_class(mrb, exc) != mrb_obj_class(mrb, obj)) { - if (mrb_respond_to(mrb, obj, mrb_intern(mrb, "message"))) { - mesg = mrb_funcall(mrb, obj, "message", 0); - } - else - return mrb_false_value(); + if (mrb_obj_equal(mrb, exc, obj)) { + equal_p = 1; } else { - mesg = mrb_attr_get(mrb, obj, id_mesg); + if (mrb_obj_class(mrb, exc) != mrb_obj_class(mrb, obj)) { + if (mrb_respond_to(mrb, obj, mrb_intern(mrb, "message"))) { + mesg = mrb_funcall(mrb, obj, "message", 0); + } + else + return mrb_false_value(); + } + else { + mesg = mrb_attr_get(mrb, obj, id_mesg); + } + + equal_p = mrb_equal(mrb, mrb_attr_get(mrb, exc, id_mesg), mesg); } - if (!mrb_equal(mrb, mrb_attr_get(mrb, exc, id_mesg), mesg)) - return mrb_false_value(); - return mrb_true_value(); + return mrb_true_or_false_value(equal_p); } static void -- cgit v1.2.3