ref: 42a4f6f9cbefb56698b9a4274473020188031754
parent: 79b34c2f1e0ba91ff5f4f879dc42eddfd82cc563
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Fri Mar 31 06:40:33 EDT 2017
tplimpl: Fix map data race in URLLock
--- a/tpl/tplimpl/template_resources.go
+++ b/tpl/tplimpl/template_resources.go
@@ -46,12 +46,17 @@
// URLLock locks an URL during download
func (l *remoteLock) URLLock(url string) {
+ var (
+ lock *sync.Mutex
+ ok bool
+ )
l.Lock()
- if _, ok := l.m[url]; !ok {
- l.m[url] = &sync.Mutex{}
+ if lock, ok = l.m[url]; !ok {
+ lock = &sync.Mutex{}
+ l.m[url] = lock
}
l.Unlock()
- l.m[url].Lock()
+ lock.Lock()
}
// URLUnlock unlocks an URL when the download has been finished. Use only in defer calls.
--
⑨