diff --git a/worker/imap/seqmap.go b/worker/imap/seqmap.go index 3558fe4..4a84586 100644 --- a/worker/imap/seqmap.go +++ b/worker/imap/seqmap.go @@ -14,7 +14,8 @@ type SeqMap struct { // Initialize sets the initial seqmap of the mailbox func (s *SeqMap) Initialize(uids []uint32) { s.lock.Lock() - s.m = uids + s.m = make([]uint32, len(uids)) + copy(s.m, uids) s.sort() s.lock.Unlock() } diff --git a/worker/imap/seqmap_test.go b/worker/imap/seqmap_test.go index 42c06f8..5d6cf79 100644 --- a/worker/imap/seqmap_test.go +++ b/worker/imap/seqmap_test.go @@ -22,8 +22,11 @@ func TestSeqMap(t *testing.T) { _, found = seqmap.Pop(0) assert.Equal(false, found) - seqmap.Initialize([]uint32{1337, 42, 1107}) + uids := []uint32{1337, 42, 1107} + seqmap.Initialize(uids) assert.Equal(3, seqmap.Size()) + // Original list should remain unsorted + assert.Equal([]uint32{1337, 42, 1107}, uids) _, found = seqmap.Pop(0) assert.Equal(false, found)