summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMasaki Muranaka <[email protected]>2013-03-19 10:30:36 +0900
committerMasaki Muranaka <[email protected]>2013-03-19 11:04:20 +0900
commit488fc7f7c0c585bfc567154f8c655287fe4557c9 (patch)
tree78187a873788010064913f6cf349db45d95470f1 /src
parent162f373ccb08bfc85674ac7aeb82a1eeb3d1ee28 (diff)
downloadmruby-488fc7f7c0c585bfc567154f8c655287fe4557c9.tar.gz
mruby-488fc7f7c0c585bfc567154f8c655287fe4557c9.zip
Use mrb_true_or_false_value() / in mrb_ary_eql().
Diffstat (limited to 'src')
-rw-r--r--src/array.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/array.c b/src/array.c
index a72a7e2c3..82c4625bd 100644
--- a/src/array.c
+++ b/src/array.c
@@ -1107,20 +1107,30 @@ static mrb_value
mrb_ary_eql(mrb_state *mrb, mrb_value ary1)
{
mrb_value ary2;
+ mrb_bool eql_p;
mrb_get_args(mrb, "o", &ary2);
- if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value();
- if (!mrb_array_p(ary2)) return mrb_false_value();
- if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return mrb_false_value();
+ if (mrb_obj_equal(mrb, ary1, ary2)) {
+ eql_p = 1;
+ }
+ else if (!mrb_array_p(ary2)) {
+ eql_p = 0;
+ }
+ else if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) {
+ eql_p = 0;
+ }
else {
mrb_int i;
-
+ eql_p = 1;
for (i=0; i<RARRAY_LEN(ary1); i++) {
- if (!mrb_eql(mrb, ary_elt(ary1, i), ary_elt(ary2, i)))
- return mrb_false_value();
+ if (!mrb_eql(mrb, ary_elt(ary1, i), ary_elt(ary2, i))) {
+ eql_p = 0;
+ break;
+ }
}
- return mrb_true_value();
}
+
+ return mrb_true_or_false_value(eql_p);
}
void