diff --git a/parser/pkgpath.go b/parser/pkgpath.go index 49f6efd..d17d050 100644 --- a/parser/pkgpath.go +++ b/parser/pkgpath.go @@ -89,18 +89,25 @@ func getPkgPathFromGoMod(fname string, isDir bool, goModPath string) (string, er return path.Clean(rel), nil } -var ( - pkgPathFromGoModCache = make(map[string]string) -) +var pkgPathFromGoModCache = struct { + paths map[string]string + sync.RWMutex +}{ + paths: make(map[string]string), +} func getModulePath(goModPath string) string { - pkgPath, ok := pkgPathFromGoModCache[goModPath] + pkgPathFromGoModCache.RLock() + pkgPath, ok := pkgPathFromGoModCache.paths[goModPath] + pkgPathFromGoModCache.RUnlock() if ok { return pkgPath } defer func() { - pkgPathFromGoModCache[goModPath] = pkgPath + pkgPathFromGoModCache.Lock() + pkgPathFromGoModCache.paths[goModPath] = pkgPath + pkgPathFromGoModCache.Unlock() }() data, err := ioutil.ReadFile(goModPath)