summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMasaki Muranaka <[email protected]>2013-03-19 10:42:11 +0900
committerMasaki Muranaka <[email protected]>2013-03-19 11:04:23 +0900
commitea5a05996994420a876c36b0da26cf3f85781705 (patch)
tree7c85aaa96584bdcfd6315e49c5decaa6e3b9df4e /src
parentbe5986b2b4fc1534d753d53ac26081c98ce8883d (diff)
downloadmruby-ea5a05996994420a876c36b0da26cf3f85781705.tar.gz
mruby-ea5a05996994420a876c36b0da26cf3f85781705.zip
Use mrb_true_or_false_value() / in range_eql().
Diffstat (limited to 'src')
-rw-r--r--src/range.c41
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) */