From b40a9b85ad10b3f18c00702acb045e6687d1a050 Mon Sep 17 00:00:00 2001 From: Gary Rong Date: Wed, 10 Dec 2025 14:39:27 +0800 Subject: [PATCH] core/rawdb: simplify the size counting --- core/rawdb/freezer_memory.go | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/core/rawdb/freezer_memory.go b/core/rawdb/freezer_memory.go index 32bb680f36..a0d308f896 100644 --- a/core/rawdb/freezer_memory.go +++ b/core/rawdb/freezer_memory.go @@ -91,15 +91,14 @@ func (t *memoryTable) truncateHead(items uint64) error { if items < t.offset { return errors.New("truncation below tail") } - removeFrom := items - t.offset - for i := int(removeFrom); i < len(t.data); i++ { + for i := int(items - t.offset); i < len(t.data); i++ { if t.size > uint64(len(t.data[i])) { t.size -= uint64(len(t.data[i])) } else { t.size = 0 } } - t.data = t.data[:removeFrom] + t.data = t.data[:items-t.offset] t.items = items return nil } @@ -116,25 +115,15 @@ func (t *memoryTable) truncateTail(items uint64) error { if t.items < items { return errors.New("truncation above head") } - drop := items - t.offset - var removed uint64 - for i := uint64(0); i < drop; i++ { - removed += uint64(len(t.data[i])) - } - newLen := uint64(len(t.data)) - drop - if newLen == 0 { - t.data = nil - } else { - newData := make([][]byte, newLen) - copy(newData, t.data[drop:]) - t.data = newData + for i := uint64(0); i < items-t.offset; i++ { + if t.size > uint64(len(t.data[i])) { + t.size -= uint64(len(t.data[i])) + } else { + t.size = 0 + } } + t.data = t.data[items-t.offset:] t.offset = items - if removed >= t.size { - t.size = 0 - } else { - t.size -= removed - } return nil }