From ae795165d46f06cb68ded8c918ecef93d91be53c Mon Sep 17 00:00:00 2001 From: Lazar Travica Date: Tue, 10 Jan 2023 09:27:35 +0100 Subject: [PATCH] Tracer should only fetch the currently active stack. (#1085) --- state/runtime/tracer/structtracer/tracer.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/state/runtime/tracer/structtracer/tracer.go b/state/runtime/tracer/structtracer/tracer.go index e3ac3bc09e..24260abcc7 100644 --- a/state/runtime/tracer/structtracer/tracer.go +++ b/state/runtime/tracer/structtracer/tracer.go @@ -143,7 +143,7 @@ func (t *StructTracer) CaptureState( t.captureMemory(memory) - t.captureStack(stack) + t.captureStack(stack, sp) t.captureStorage( stack, @@ -169,14 +169,19 @@ func (t *StructTracer) captureMemory( func (t *StructTracer) captureStack( stack []*big.Int, + sp int, ) { if !t.Config.EnableStack { return } - t.currentStack = make([]*big.Int, len(stack)) + t.currentStack = make([]*big.Int, sp) for i, v := range stack { + if i >= sp { + break + } + t.currentStack[i] = new(big.Int).Set(v) } }