@@ -167,9 +167,7 @@ func scanSinglePath(ctx context.Context, c malcontent.Config, path string, ruleF
167167 initializeOnce .Do (func () {
168168 scannerPool = pool .NewScannerPool (yrs , getMaxConcurrency (c .Concurrency ))
169169 })
170-
171- scanner := scannerPool .Get ()
172- defer scannerPool .Put (scanner )
170+ scanner := scannerPool .Get (yrs )
173171
174172 fc , mrs , size , checksum , err := scanFD (scanner , fd , logger )
175173 if err != nil {
@@ -195,6 +193,7 @@ func scanSinglePath(ctx context.Context, c malcontent.Config, path string, ruleF
195193 }
196194
197195 defer func () {
196+ scannerPool .Put (scanner )
198197 fc = nil
199198 mrs = nil
200199 }()
@@ -788,20 +787,22 @@ func Scan(ctx context.Context, c malcontent.Config) (*malcontent.Report, error)
788787 return r , err
789788 }
790789
791- r .Files .Range (func (key , value any ) bool {
792- if scanCtx .Err () != nil {
793- return false
794- }
795- if key == nil || value == nil {
796- return true
797- }
798- if fr , ok := value .(* malcontent.FileReport ); ok {
799- if fr .RiskScore < c .MinFileRisk {
800- r .Files .Delete (key )
790+ if r != nil {
791+ r .Files .Range (func (key , value any ) bool {
792+ if scanCtx .Err () != nil {
793+ return false
801794 }
802- }
803- return true
804- })
795+ if key == nil || value == nil {
796+ return true
797+ }
798+ if fr , ok := value .(* malcontent.FileReport ); ok {
799+ if fr .RiskScore < c .MinFileRisk {
800+ r .Files .Delete (key )
801+ }
802+ }
803+ return true
804+ })
805+ }
805806 if scanCtx .Err () == nil && c .Stats && c .Renderer .Name () != "JSON" && c .Renderer .Name () != "YAML" {
806807 err = render .Statistics (& c , r )
807808 if err != nil {
0 commit comments