Skip to content

Commit 41e4fed

Browse files
Fix incorrect usage of sync.WaitGroup in RulesFromFile (#7)
* `RulesFromFile`: fix `sync.WaitGroup` usage
1 parent 5c67598 commit 41e4fed

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

rules.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,21 +102,22 @@ func RulesFromFile(pathname string, ranges []Range, visited map[string]struct{},
102102
return nil, errors.Wrapf(err, "failed to parse rules for file %s", pathname)
103103
}
104104

105+
var innerWg sync.WaitGroup // WaitGroup for inner goroutines
105106
for _, rule := range rules {
106107
for _, target := range rule.Targets {
107108
if target.File == nil {
108109
continue
109110
}
110111

111-
wg.Add(1)
112+
innerWg.Add(1)
112113
go func(pathname string) {
113-
defer wg.Done()
114+
defer innerWg.Done()
114115

115116
if _, ok := visited[pathname]; ok {
116117
return
117118
}
118119

119-
moreRules, err := RulesFromFile(pathname, nil, visited, wg, options)
120+
moreRules, err := RulesFromFile(pathname, nil, visited, &innerWg, options)
120121
if err != nil {
121122
return
122123
}
@@ -126,5 +127,9 @@ func RulesFromFile(pathname string, ranges []Range, visited map[string]struct{},
126127
}
127128
}
128129

130+
// Wait for all inner goroutines to complete before returning.
131+
innerWg.Wait()
132+
133+
// Add rules to the map.
129134
return rules, nil
130135
}

0 commit comments

Comments
 (0)