diff options
| author | Masaki Muranaka <[email protected]> | 2013-03-19 10:32:59 +0900 |
|---|---|---|
| committer | Masaki Muranaka <[email protected]> | 2013-03-19 11:04:20 +0900 |
| commit | 2930bc50a92bd66da0969a3362086e8d309a2b3d (patch) | |
| tree | b16a91586357911b755cefc11ede52d525ee2e45 /src/error.c | |
| parent | b3373d7e91e813227eca7bbcd6bdf7ee414dedda (diff) | |
| download | mruby-2930bc50a92bd66da0969a3362086e8d309a2b3d.tar.gz mruby-2930bc50a92bd66da0969a3362086e8d309a2b3d.zip | |
Use mrb_true_or_false_value() / in exc_equal().
Diffstat (limited to 'src/error.c')
| -rw-r--r-- | src/error.c | 28 |
1 files changed, 16 insertions, 12 deletions
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 |
