From 10d181545ac1c841271cfdb33ad0ed2954b7d8e3 Mon Sep 17 00:00:00 2001 From: Giulio rebuffo Date: Fri, 14 Feb 2025 12:40:20 +0100 Subject: [PATCH] Caplin: fix validatorSet's `CopyTo` (#13818) --- cl/cltypes/solid/validator_set.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/cl/cltypes/solid/validator_set.go b/cl/cltypes/solid/validator_set.go index 72b5ccd13e5..e57af6bc677 100644 --- a/cl/cltypes/solid/validator_set.go +++ b/cl/cltypes/solid/validator_set.go @@ -91,16 +91,17 @@ func (v *ValidatorSet) expandBuffer(newValidatorSetLength int) { func (v *ValidatorSet) Append(val Validator) { offset := v.EncodingSizeSSZ() // we are overflowing the buffer? append. - if offset+validatorSize >= len(v.buffer) { - v.expandBuffer(v.l + 1) - v.phase0Data = append(v.phase0Data, Phase0Data{}) + //if offset+validatorSize >= len(v.buffer) { + v.expandBuffer(v.l + 1) + v.phase0Data = append(v.phase0Data, Phase0Data{}) + //} - if v.MerkleTree != nil { - v.MerkleTree.AppendLeaf() - } - v.zeroTreeHash(v.l) - copy(v.buffer[offset:], val) + copy(v.buffer[offset:], val) + if v.MerkleTree != nil { + v.MerkleTree.AppendLeaf() } + v.zeroTreeHash(v.l) + if v.l >= len(v.phase0Data) { for i := len(v.phase0Data); i < v.l+1; i++ { v.phase0Data = append(v.phase0Data, Phase0Data{}) @@ -171,6 +172,7 @@ func (v *ValidatorSet) CopyTo(t *ValidatorSet) { t.phase0Data = make([]Phase0Data, v.l) copy(t.buffer, v.buffer) copy(t.attesterBits, v.attesterBits) + t.buffer = t.buffer[:v.l*validatorSize] t.attesterBits = t.attesterBits[:v.l] }