diff --git a/lib/net/imap/sequence_set.rb b/lib/net/imap/sequence_set.rb index d3068945..ebd0632f 100644 --- a/lib/net/imap/sequence_set.rb +++ b/lib/net/imap/sequence_set.rb @@ -1249,6 +1249,7 @@ def slice_range(range) remain_frozen_empty elsif (min = at(first)) max = at(last) + max = :* if max.nil? if max == :* then self & (min..) elsif min <= max then self & (min..max) else remain_frozen_empty diff --git a/test/net/imap/test_sequence_set.rb b/test/net/imap/test_sequence_set.rb index 04d342ee..b6ef9a3f 100644 --- a/test/net/imap/test_sequence_set.rb +++ b/test/net/imap/test_sequence_set.rb @@ -296,6 +296,9 @@ def obj.to_sequence_set; 192_168.001_255 end SequenceSet[((1..10_000) % 10).to_a][-5, 4] assert_nil SequenceSet[111..222, 888..999][2000, 4] assert_nil SequenceSet[111..222, 888..999][-2000, 4] + # with length longer than the remaining members + assert_equal SequenceSet[101...200], + SequenceSet[1...200][100, 10000] end test "#[range]" do @@ -322,6 +325,8 @@ def obj.to_sequence_set; 192_168.001_255 end assert_nil SequenceSet.empty[2..4] assert_nil SequenceSet[101..200][1000..1060] assert_nil SequenceSet[101..200][-1000..-60] + # with length longer than the remaining members + assert_equal SequenceSet[101..1111], SequenceSet[1..1111][100..999_999] end test "#find_index" do