all: assign zero after resize in implementations of heap.Interface (#26296)

This changes the Pop method to assign the zero value before
reducing slice size. Doing so ensures the backing array does not
reference removed item values.
This commit is contained in:
Håvard Anda Estensen 2022-12-05 13:49:54 +01:00 committed by GitHub
parent 10347c6b54
commit 06632da2bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 3 additions and 0 deletions

@ -45,6 +45,7 @@ func (h *nonceHeap) Pop() interface{} {
old := *h old := *h
n := len(old) n := len(old)
x := old[n-1] x := old[n-1]
old[n-1] = 0
*h = old[0 : n-1] *h = old[0 : n-1]
return x return x
} }

@ -508,6 +508,7 @@ func (s *TxByPriceAndTime) Pop() interface{} {
old := *s old := *s
n := len(old) n := len(old)
x := old[n-1] x := old[n-1]
old[n-1] = nil
*s = old[0 : n-1] *s = old[0 : n-1]
return x return x
} }

@ -70,6 +70,7 @@ func (h *expHeap) Pop() interface{} {
old := *h old := *h
n := len(old) n := len(old)
x := old[n-1] x := old[n-1]
old[n-1] = expItem{}
*h = old[0 : n-1] *h = old[0 : n-1]
return x return x
} }