diff options
author | Nobuyoshi Nakada <[email protected]> | 2023-03-21 22:53:45 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2023-04-14 10:22:09 +0900 |
commit | fb17c833f542222afdf482924877d43aa577782d (patch) | |
tree | e909919fb7f9d401f5a8f292d3fdc0a93ae2cedc /range.c | |
parent | 1a149aab776aa6741628eb35482eff1ded197fd2 (diff) |
[Bug #19533] Fix infinite range inclusion with numeric value
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7574
Diffstat (limited to 'range.c')
-rw-r--r-- | range.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -1789,8 +1789,12 @@ range_string_range_p(VALUE beg, VALUE end) } static inline VALUE -range_include_fallback(VALUE beg, VALUE end) +range_include_fallback(VALUE beg, VALUE end, VALUE val) { + if (NIL_P(beg) && NIL_P(end)) { + if (linear_object_p(val)) return Qtrue; + } + if (NIL_P(beg) || NIL_P(end)) { rb_raise(rb_eTypeError, "cannot determine inclusion in beginless/endless ranges"); } @@ -1828,7 +1832,7 @@ range_string_cover_internal(VALUE range, VALUE val) } } - return range_include_fallback(beg, end); + return range_include_fallback(beg, end, val); } static VALUE @@ -1846,7 +1850,7 @@ range_include_internal(VALUE range, VALUE val) return rb_str_include_range_p(beg, end, val, RANGE_EXCL(range)); } - return range_include_fallback(beg, end); + return range_include_fallback(beg, end, val); } static int r_cover_range_p(VALUE range, VALUE beg, VALUE end, VALUE val); |