summaryrefslogtreecommitdiff
path: root/range.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2023-03-21 22:53:45 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2023-04-14 10:22:09 +0900
commitfb17c833f542222afdf482924877d43aa577782d (patch)
treee909919fb7f9d401f5a8f292d3fdc0a93ae2cedc /range.c
parent1a149aab776aa6741628eb35482eff1ded197fd2 (diff)
downloadruby-fb17c833f542222afdf482924877d43aa577782d.tar.gz
[Bug #19533] Fix infinite range inclusion with numeric value
Diffstat (limited to 'range.c')
-rw-r--r--range.c10
1 files changed, 7 insertions, 3 deletions
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);