diff --git a/src/pkg/io/ioutil/tempfile.go b/src/pkg/io/ioutil/tempfile.go index 42d2e675869..257e05d2152 100644 --- a/src/pkg/io/ioutil/tempfile.go +++ b/src/pkg/io/ioutil/tempfile.go @@ -8,6 +8,7 @@ import ( "os" "path/filepath" "strconv" + "sync" "time" ) @@ -16,18 +17,21 @@ import ( // chance the file doesn't exist yet - keeps the number of tries in // TempFile to a minimum. var rand uint32 +var randmu sync.Mutex func reseed() uint32 { return uint32(time.Now().UnixNano() + int64(os.Getpid())) } func nextSuffix() string { + randmu.Lock() r := rand if r == 0 { r = reseed() } r = r*1664525 + 1013904223 // constants from Numerical Recipes rand = r + randmu.Unlock() return strconv.Itoa(int(1e9 + r%1e9))[1:] }