summaryrefslogtreecommitdiffhomepage
path: root/src/error.c
diff options
context:
space:
mode:
authorYukihiro Matz Matsumoto <[email protected]>2013-03-19 11:58:31 +0900
committerYukihiro Matz Matsumoto <[email protected]>2013-03-19 11:58:31 +0900
commitdc2e1c1ce8ae6da16532337b85ea1064db8d0624 (patch)
treefc389b0c1bc23dea76e92c5747a8905a31966844 /src/error.c
parent5217d889633fc556458b2327c30ba483e02ce6d7 (diff)
parent6ab9c389c43bdad2311b384852a1f448e56a527c (diff)
downloadmruby-dc2e1c1ce8ae6da16532337b85ea1064db8d0624.tar.gz
mruby-dc2e1c1ce8ae6da16532337b85ea1064db8d0624.zip
Merge branch 'pr-add-new-api-mrb_true_or_false_value' of https://github.com/monaka/mruby into monaka-pr-add-new-api-mrb_true_or_false_value
Diffstat (limited to 'src/error.c')
-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