diff options
| author | Masaki Muranaka <[email protected]> | 2013-03-19 10:30:36 +0900 |
|---|---|---|
| committer | Masaki Muranaka <[email protected]> | 2013-03-19 11:04:20 +0900 |
| commit | 488fc7f7c0c585bfc567154f8c655287fe4557c9 (patch) | |
| tree | 78187a873788010064913f6cf349db45d95470f1 /src/array.c | |
| parent | 162f373ccb08bfc85674ac7aeb82a1eeb3d1ee28 (diff) | |
| download | mruby-488fc7f7c0c585bfc567154f8c655287fe4557c9.tar.gz mruby-488fc7f7c0c585bfc567154f8c655287fe4557c9.zip | |
Use mrb_true_or_false_value() / in mrb_ary_eql().
Diffstat (limited to 'src/array.c')
| -rw-r--r-- | src/array.c | 24 |
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 |
