aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--worker/imap/seqmap.go3
-rw-r--r--worker/imap/seqmap_test.go5
2 files changed, 6 insertions, 2 deletions
diff --git a/worker/imap/seqmap.go b/worker/imap/seqmap.go
index 3558fe48..4a845865 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 42c06f81..5d6cf796 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)