diff options
Diffstat (limited to 'range.c')
-rw-r--r-- | range.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -1484,8 +1484,9 @@ r_cover_range_p(VALUE range, VALUE beg, VALUE end, VALUE val) val_end = RANGE_END(val); if (!NIL_P(end) && NIL_P(val_end)) return FALSE; - if (!NIL_P(val_end) && r_less(val_beg, val_end) > -EXCL(val)) return FALSE; - if (!r_cover_p(range, beg, end, val_beg)) return FALSE; + if (!NIL_P(beg) && NIL_P(val_beg)) return FALSE; + if (!NIL_P(val_beg) && !NIL_P(val_end) && r_less(val_beg, val_end) > -EXCL(val)) return FALSE; + if (!NIL_P(val_beg) && !r_cover_p(range, beg, end, val_beg)) return FALSE; cmp_end = r_less(end, val_end); |