From e480c3f6774949fe18e164df979e063157ffef48 Mon Sep 17 00:00:00 2001 From: sneak Date: Wed, 17 Dec 2025 17:02:29 -0800 Subject: [PATCH] Fix redundant stat call in addFile Use the FileInfo already provided by Walk instead of calling Stat again. Only stat if fi is nil (defensive, shouldn't happen in normal Walk usage). Also fixes potential nil pointer dereference if fi was nil. --- mfer/manifest.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/mfer/manifest.go b/mfer/manifest.go index e1eda63..21730ab 100644 --- a/mfer/manifest.go +++ b/mfer/manifest.go @@ -156,22 +156,25 @@ func (m *manifest) addFile(p string, fi fs.FileInfo, sfsIndex int) error { if !m.scanOptions.IncludeDotfiles && pathIsHidden(p) { return nil } - if fi != nil && fi.IsDir() { + if fi == nil { + // fi should come from Walk; if nil, stat to get info + var err error + fi, err = m.sourceFS[sfsIndex].Stat(p) + if err != nil { + return err + } + } + if fi.IsDir() { // manifests contain only files, directories are implied. return nil } - // FIXME test if 'fi' is already result of stat - fileinfo, staterr := m.sourceFS[sfsIndex].Stat(p) - if staterr != nil { - return staterr - } cleanPath := p if cleanPath[0:1] == "/" { cleanPath = cleanPath[1:] } nf := &manifestFile{ path: cleanPath, - info: fileinfo, + info: fi, } m.files = append(m.files, nf) m.totalFileSize = m.totalFileSize + fi.Size()