// ErrorReporter is used to make error reporting thread safe.
type ErrorReporter struct {
loader.ErrorReporter
- unresOnce sync.Once
unresSyms map[unresolvedSymKey]bool
unresMutex sync.Mutex
SymName symNameFn
// errorUnresolved prints unresolved symbol error for rs that is referenced from s.
func (reporter *ErrorReporter) errorUnresolved(ldr *loader.Loader, s, rs loader.Sym) {
- reporter.unresOnce.Do(func() { reporter.unresSyms = make(map[unresolvedSymKey]bool) })
-
- k := unresolvedSymKey{from: s, to: rs}
reporter.unresMutex.Lock()
defer reporter.unresMutex.Unlock()
+
+ if reporter.unresSyms == nil {
+ reporter.unresSyms = make(map[unresolvedSymKey]bool)
+ }
+ k := unresolvedSymKey{from: s, to: rs}
if !reporter.unresSyms[k] {
reporter.unresSyms[k] = true
name := ldr.SymName(rs)