summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMasaki Muranaka <[email protected]>2013-03-19 10:32:59 +0900
committerMasaki Muranaka <[email protected]>2013-03-19 11:04:20 +0900
commit2930bc50a92bd66da0969a3362086e8d309a2b3d (patch)
treeb16a91586357911b755cefc11ede52d525ee2e45
parentb3373d7e91e813227eca7bbcd6bdf7ee414dedda (diff)
downloadmruby-2930bc50a92bd66da0969a3362086e8d309a2b3d.tar.gz
mruby-2930bc50a92bd66da0969a3362086e8d309a2b3d.zip
Use mrb_true_or_false_value() / in exc_equal().
-rw-r--r--src/error.c28
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