diff options
| author | Masaki Muranaka <[email protected]> | 2013-03-19 10:41:40 +0900 |
|---|---|---|
| committer | Masaki Muranaka <[email protected]> | 2013-03-19 11:04:22 +0900 |
| commit | 90cd202fd14fddd327c789c0b03e2c27b0fd33ce (patch) | |
| tree | 6a6f4a15132bfc3da34ab8cf3e798e27fabd254c /src/range.c | |
| parent | afcbd6c8ef72e7b27d2e8f057c8782f13dd91b6b (diff) | |
| download | mruby-90cd202fd14fddd327c789c0b03e2c27b0fd33ce.tar.gz mruby-90cd202fd14fddd327c789c0b03e2c27b0fd33ce.zip | |
Use mrb_true_or_false_value() / in mrb_range_eq().
Diffstat (limited to 'src/range.c')
| -rw-r--r-- | src/range.c | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/src/range.c b/src/range.c index 42e3275d4..976db6491 100644 --- a/src/range.c +++ b/src/range.c @@ -152,25 +152,30 @@ mrb_range_eq(mrb_state *mrb, mrb_value range) struct RRange *rr; struct RRange *ro; mrb_value obj; + mrb_bool eq_p; mrb_get_args(mrb, "o", &obj); - if (mrb_obj_equal(mrb, range, obj)) return mrb_true_value(); - - /* same class? */ - if (!mrb_obj_is_instance_of(mrb, obj, mrb_obj_class(mrb, range))) - return mrb_false_value(); - - rr = mrb_range_ptr(range); - ro = mrb_range_ptr(obj); - if (!mrb_obj_equal(mrb, rr->edges->beg, ro->edges->beg)) - return mrb_false_value(); - if (!mrb_obj_equal(mrb, rr->edges->end, ro->edges->end)) - return mrb_false_value(); - if (rr->excl != ro->excl) - return mrb_false_value(); + if (mrb_obj_equal(mrb, range, obj)) { + eq_p = 1; + } + else if (!mrb_obj_is_instance_of(mrb, obj, mrb_obj_class(mrb, range))) { /* same class? */ + eq_p = 0; + } + else { + rr = mrb_range_ptr(range); + ro = mrb_range_ptr(obj); + if (!mrb_obj_equal(mrb, rr->edges->beg, ro->edges->beg) || + !mrb_obj_equal(mrb, rr->edges->end, ro->edges->end) || + rr->excl != ro->excl) { + eq_p = 0; + } + else { + eq_p = 1; + } + } - return mrb_true_value(); + return mrb_true_or_false_value(eq_p); } static int |
