From fb17c833f542222afdf482924877d43aa577782d Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 21 Mar 2023 22:53:45 +0900 Subject: [Bug #19533] Fix infinite range inclusion with numeric value --- range.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'range.c') diff --git a/range.c b/range.c index 5f60c11257..62e957e622 100644 --- a/range.c +++ b/range.c @@ -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); -- cgit v1.2.1