summaryrefslogtreecommitdiffhomepage
path: root/src/array.c
diff options
context:
space:
mode:
authorJun Hiroe <[email protected]>2013-07-01 23:34:56 +0900
committerJun Hiroe <[email protected]>2013-07-01 23:53:03 +0900
commit2f8e9b474f41d1fe72cbdc626fc990f2a7544a9e (patch)
tree9bb9855efac108838550c910dcbf10d7f4fa3684 /src/array.c
parent997c073627c32e292b36a488b8e9711daa6e4592 (diff)
downloadmruby-2f8e9b474f41d1fe72cbdc626fc990f2a7544a9e.tar.gz
mruby-2f8e9b474f41d1fe72cbdc626fc990f2a7544a9e.zip
Refactor mrb_ary_equal() func in array.c.
Diffstat (limited to 'src/array.c')
-rw-r--r--src/array.c35
1 files changed, 11 insertions, 24 deletions
diff --git a/src/array.c b/src/array.c
index 92359b033..a22730776 100644
--- a/src/array.c
+++ b/src/array.c
@@ -1056,39 +1056,26 @@ static mrb_value
mrb_ary_equal(mrb_state *mrb, mrb_value ary1)
{
mrb_value ary2;
- mrb_bool equal_p;
+ mrb_int i;
mrb_get_args(mrb, "o", &ary2);
- if (mrb_obj_equal(mrb, ary1, ary2)) {
- equal_p = 1;
- }
- else if (mrb_special_const_p(ary2)) {
- equal_p = 0;
- }
- else if (!mrb_array_p(ary2)) {
+ if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value();
+ if (mrb_special_const_p(ary2)) return mrb_false_value();
+ if (!mrb_array_p(ary2)) {
if (!mrb_respond_to(mrb, ary2, mrb_intern2(mrb, "to_ary", 6))) {
- equal_p = 0;
+ return mrb_false_value();
}
else {
- equal_p = mrb_equal(mrb, ary2, ary1);
+ return mrb_bool_value(mrb_equal(mrb, ary2, ary1));
}
}
- else if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) {
- equal_p = 0;
- }
- else {
- mrb_int i;
-
- equal_p = 1;
- for (i=0; i<RARRAY_LEN(ary1); i++) {
- if (!mrb_equal(mrb, ary_elt(ary1, i), ary_elt(ary2, i))) {
- equal_p = 0;
- break;
- }
+ if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return mrb_false_value();
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ if (!mrb_equal(mrb, ary_elt(ary1, i), ary_elt(ary2, i))) {
+ return mrb_false_value();
}
}
-
- return mrb_bool_value(equal_p);
+ return mrb_true_value();
}
/* 15.2.12.5.34 (x) */