Kaynağa Gözat

fix: unaligned 64-bit atomic operation panic (#1696)

Richard Gomez 1 yıl önce
ebeveyn
işleme
977236cb5f
2 değiştirilmiş dosya ile 4 ekleme ve 5 silme
  1. 1 2
      cmd/root.go
  2. 3 3
      detect/detect.go

+ 1 - 2
cmd/root.go

@@ -6,7 +6,6 @@ import (
 	"os"
 	"path/filepath"
 	"strings"
-	"sync/atomic"
 	"time"
 
 	"github.com/rs/zerolog"
@@ -362,7 +361,7 @@ func bytesConvert(bytes uint64) string {
 }
 
 func findingSummaryAndExit(detector *detect.Detector, findings []report.Finding, exitCode int, start time.Time, err error) {
-	totalBytes := atomic.LoadUint64(&detector.TotalBytes)
+	totalBytes := detector.TotalBytes.Load()
 	bytesMsg := fmt.Sprintf("scanned ~%d bytes (%s)", totalBytes, bytesConvert(totalBytes))
 	if err == nil {
 		logging.Info().Msgf("%s in %s", bytesMsg, FormatDuration(time.Since(start)))

+ 3 - 3
detect/detect.go

@@ -89,7 +89,7 @@ type Detector struct {
 	ReportPath string
 	Reporter   report.Reporter
 
-	TotalBytes uint64
+	TotalBytes atomic.Uint64
 }
 
 // Fragment contains the data to be scanned
@@ -184,9 +184,9 @@ func (d *Detector) DetectString(content string) []report.Finding {
 // Detect scans the given fragment and returns a list of findings
 func (d *Detector) Detect(fragment Fragment) []report.Finding {
 	if fragment.Bytes == nil {
-		atomic.AddUint64(&d.TotalBytes, uint64(len(fragment.Raw)))
+		d.TotalBytes.Add(uint64(len(fragment.Raw)))
 	}
-	atomic.AddUint64(&d.TotalBytes, uint64(len(fragment.Bytes)))
+	d.TotalBytes.Add(uint64(len(fragment.Bytes)))
 
 	var findings []report.Finding