diff --git a/trie/bintrie/stem_node.go b/trie/bintrie/stem_node.go index 9f1ac6d2e0..e44d25638f 100644 --- a/trie/bintrie/stem_node.go +++ b/trie/bintrie/stem_node.go @@ -97,6 +97,7 @@ func (sn *StemNode) ensureWritable() { // setValue sets or inserts a value at the given suffix. func (sn *StemNode) setValue(suffix byte, value []byte) { + sn.ensureWritable() idx := int(suffix) pos := sn.posInData(suffix) if pos >= 0 { diff --git a/trie/bintrie/store_ops.go b/trie/bintrie/store_ops.go index 83885feacc..6bb966a074 100644 --- a/trie/bintrie/store_ops.go +++ b/trie/bintrie/store_ops.go @@ -192,7 +192,6 @@ func (s *NodeStore) InsertSingle(stem []byte, suffix byte, value []byte, resolve if s.root.Kind() == KindStem { sn := s.getStem(s.root.Index()) if sn.Stem == [StemSize]byte(stem[:StemSize]) { - sn.ensureWritable() sn.setValue(suffix, value) sn.mustRecompute = true return nil @@ -235,7 +234,6 @@ func (s *NodeStore) insertSingleInternal(stem []byte, suffix byte, value []byte, case KindStem: sn := s.getStem(cur.Index()) if sn.Stem == [StemSize]byte(stem[:StemSize]) { - sn.ensureWritable() sn.setValue(suffix, value) sn.mustRecompute = true return nil @@ -432,7 +430,6 @@ func (s *NodeStore) insertValuesAtStem(ref NodeRef, stem []byte, values [][]byte sn := s.getStem(ref.Index()) if sn.Stem == [StemSize]byte(stem[:StemSize]) { // Same stem — merge values - sn.ensureWritable() for i, v := range values { if v != nil { sn.setValue(byte(i), v)