diff options
| author | Masaki Muranaka <[email protected]> | 2013-03-19 10:42:11 +0900 |
|---|---|---|
| committer | Masaki Muranaka <[email protected]> | 2013-03-19 11:04:23 +0900 |
| commit | ea5a05996994420a876c36b0da26cf3f85781705 (patch) | |
| tree | 7c85aaa96584bdcfd6315e49c5decaa6e3b9df4e /src | |
| parent | be5986b2b4fc1534d753d53ac26081c98ce8883d (diff) | |
| download | mruby-ea5a05996994420a876c36b0da26cf3f85781705.tar.gz mruby-ea5a05996994420a876c36b0da26cf3f85781705.zip | |
Use mrb_true_or_false_value() / in range_eql().
Diffstat (limited to 'src')
| -rw-r--r-- | src/range.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/src/range.c b/src/range.c index 7b58eadab..8d36ed7b4 100644 --- a/src/range.c +++ b/src/range.c @@ -385,23 +385,34 @@ range_eql(mrb_state *mrb, mrb_value range) { mrb_value obj; struct RRange *r, *o; + mrb_bool eql_p; mrb_get_args(mrb, "o", &obj); - if (mrb_obj_equal(mrb, range, obj)) - return mrb_true_value(); - if (!mrb_obj_is_kind_of(mrb, obj, RANGE_CLASS)) - return mrb_false_value(); - - r = mrb_range_ptr(range); - if (mrb_type(obj) != MRB_TT_RANGE) return mrb_false_value(); - o = mrb_range_ptr(obj); - if (!mrb_eql(mrb, r->edges->beg, o->edges->beg)) - return mrb_false_value(); - if (!mrb_eql(mrb, r->edges->end, o->edges->end)) - return mrb_false_value(); - if (r->excl != o->excl) - return mrb_false_value(); - return mrb_true_value(); + if (mrb_obj_equal(mrb, range, obj)) { + eql_p = 1; + } + else if (!mrb_obj_is_kind_of(mrb, obj, RANGE_CLASS)) { + eql_p = 0; + } + else { + r = mrb_range_ptr(range); + if (mrb_type(obj) != MRB_TT_RANGE) { + eql_p = 0; + } + else { + o = mrb_range_ptr(obj); + if (!mrb_eql(mrb, r->edges->beg, o->edges->beg) || + !mrb_eql(mrb, r->edges->end, o->edges->end) || + (r->excl != o->excl)) { + eql_p = 0; + } + else { + eql_p = 1; + } + } + } + + return mrb_true_or_false_value(eql_p); } /* 15.2.14.4.15(x) */ |
