diff --git a/lib/uint64set/uint64set.go b/lib/uint64set/uint64set.go
index f9d6209fbc..0c63332c91 100644
--- a/lib/uint64set/uint64set.go
+++ b/lib/uint64set/uint64set.go
@@ -364,6 +364,7 @@ func (b *bucket32) union(a *bucket32, mayOwn bool) {
 		}
 		if i >= len(bb16his) {
 			for j < len(a.b16his) {
+				b.b16his = append(b.b16his, a.b16his[j])
 				b16 := b.addBucket16()
 				a.buckets[j].copyTo(b16)
 				j++
@@ -371,6 +372,7 @@ func (b *bucket32) union(a *bucket32, mayOwn bool) {
 			break
 		}
 		for j < len(a.b16his) && a.b16his[j] < bb16his[i] {
+			b.b16his = append(b.b16his, a.b16his[j])
 			b16 := b.addBucket16()
 			a.buckets[j].copyTo(b16)
 			j++