diff --git a/lib/net/imap/sequence_set.rb b/lib/net/imap/sequence_set.rb index 483ed8031..d04ddb61d 100644 --- a/lib/net/imap/sequence_set.rb +++ b/lib/net/imap/sequence_set.rb @@ -2420,7 +2420,7 @@ def reverse_each_minmax_with_index(minmaxes) def slice_length(start, length) start = Integer(start.to_int) length = Integer(length.to_int) - raise ArgumentError, "length must not be negative" if length.negative? + return nil if length.negative? stop = start + length unless start.negative? && start.abs <= length slice_range(start...stop) end diff --git a/test/net/imap/test_sequence_set.rb b/test/net/imap/test_sequence_set.rb index 578534016..6c6490334 100644 --- a/test/net/imap/test_sequence_set.rb +++ b/test/net/imap/test_sequence_set.rb @@ -487,20 +487,10 @@ def obj.to_sequence_set; 192_168.001_255 end SequenceSet[1...200][100, 10000] end - def pend_slice_bug(what, &) = pend("#slice bug: #{what}", &) - - def pend_slice_neg_len(&) - pend_slice_bug("allow negative length", &) - assert_raise_with_message(ArgumentError, - "length must not be negative", - &) - end - - test "#slice(start, length) -> nil, for negative length" do set = SequenceSet[1...200] - pend_slice_neg_len do assert_nil set[ 100, -1] end - pend_slice_neg_len do assert_nil set[-100, -1] end + assert_nil set[ 100, -1] + assert_nil set[-100, -1] end test "#slice(start, length) -> nil, for invalid start" do