From 68f1c6ccab46c9345c8619b8bdd1531eca8c6f04 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 18 Jan 2017 18:43:00 +0100 Subject: [PATCH] lib/scanner: Avoid per iteration allocations in Blocks() Resetting the io.LimitReader is better than creating a new one on every iteration. --- lib/scanner/blocks.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/scanner/blocks.go b/lib/scanner/blocks.go index ec6d946c..788e7428 100644 --- a/lib/scanner/blocks.go +++ b/lib/scanner/blocks.go @@ -45,8 +45,9 @@ func Blocks(r io.Reader, blocksize int, sizehint int64, counter Counter) ([]prot buf := make([]byte, 32<<10) var offset int64 + lr := io.LimitReader(r, int64(blocksize)).(*io.LimitedReader) for { - lr := io.LimitReader(r, int64(blocksize)) + lr.N = int64(blocksize) n, err := io.CopyBuffer(mhf, lr, buf) if err != nil { return nil, err