diff options
author | nagachika <nagachika@ruby-lang.org> | 2022-10-23 19:11:45 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2022-10-23 19:11:45 +0900 |
commit | 941c888b041decb45034572d766120f9be34986e (patch) | |
tree | e6657b0e005767a1ea77a85b69385eb84aa0bbf4 /range.c | |
parent | 5e25ba5d07d42f02485235e3962a4a28373c50e1 (diff) |
merge revision(s) bbe5ec78463f8d6ef2e1a3571f17357a3d9ec8e4: [Backport #18994]
rb_int_range_last: properly handle non-exclusive range
[Bug #18994]
---
range.c | 8 ++++----
spec/ruby/core/range/last_spec.rb | 6 ++++++
2 files changed, 10 insertions(+), 4 deletions(-)
Diffstat (limited to 'range.c')
-rw-r--r-- | range.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -1107,10 +1107,6 @@ rb_int_range_last(int argc, VALUE *argv, VALUE range) x = EXCL(range); len_1 = rb_int_minus(e, b); - if (FIXNUM_ZERO_P(len_1) || rb_num_negative_p(len_1)) { - return rb_ary_new_capa(0); - } - if (x) { e = rb_int_minus(e, ONE); len = len_1; @@ -1119,6 +1115,10 @@ rb_int_range_last(int argc, VALUE *argv, VALUE range) len = rb_int_plus(len_1, ONE); } + if (FIXNUM_ZERO_P(len) || rb_num_negative_p(len)) { + return rb_ary_new_capa(0); + } + rb_scan_args(argc, argv, "1", &nv); n = NUM2LONG(nv); if (n < 0) { |