Skip to content

Commit 4c9b1a2

Browse files
committed
🐛 Fix SequenceSet#append when @string is nil
1 parent 0eb4390 commit 4c9b1a2

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

lib/net/imap/sequence_set.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,8 +684,9 @@ def append(object)
684684
modifying!
685685
tuple = input_to_tuple object
686686
entry = tuple_to_str tuple
687+
string unless empty? # write @string before tuple_add
687688
tuple_add tuple
688-
@string = -(string ? "#{@string},#{entry}" : entry)
689+
@string = -(@string ? "#{@string},#{entry}" : entry)
689690
self
690691
end
691692

test/net/imap/test_sequence_set.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,14 @@ def obj.to_sequence_set; 192_168.001_255 end
344344
assert_equal "1:6,4:9", SequenceSet.new("1:6").append("4:9").string
345345
assert_equal "1:4,5:*", SequenceSet.new("1:4").append(5..).string
346346
assert_equal "5:*,1:4", SequenceSet.new("5:*").append(1..4).string
347+
# also works from empty
348+
assert_equal "5,1", SequenceSet.new.append(5).append(1).string
349+
# also works when *previously* input was non-strings
350+
assert_equal "*,1", SequenceSet.new(:*).append(1).string
351+
assert_equal "1,5", SequenceSet.new(1).append("5").string
352+
assert_equal "1:6,4:9", SequenceSet.new(1..6).append(4..9).string
353+
assert_equal "1:4,5:*", SequenceSet.new(1..4).append(5..).string
354+
assert_equal "5:*,1:4", SequenceSet.new(5..).append(1..4).string
347355
end
348356

349357
test "#merge" do

0 commit comments

Comments
 (0)