Skip to content

Commit cf875b8

Browse files
tklausergopherbot
authored andcommitted
syscall: use sync.OnceFunc for copyenv
Change-Id: I64f658c1962878685ba7736f19d58e10fbdcb94a Reviewed-on: https://go-review.googlesource.com/c/go/+/651835 Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Ian Lance Taylor <iant@google.com>
1 parent 4dfae6a commit cf875b8

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

src/syscall/env_unix.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@ import (
1414
)
1515

1616
var (
17-
// envOnce guards initialization by copyenv, which populates env.
18-
envOnce sync.Once
19-
2017
// envLock guards env and envs.
2118
envLock sync.RWMutex
2219

@@ -31,7 +28,7 @@ var (
3128

3229
func runtime_envs() []string // in package runtime
3330

34-
func copyenv() {
31+
var copyenv = sync.OnceFunc(func() {
3532
env = make(map[string]int)
3633
for i, s := range envs {
3734
for j := 0; j < len(s); j++ {
@@ -50,10 +47,10 @@ func copyenv() {
5047
}
5148
}
5249
}
53-
}
50+
})
5451

5552
func Unsetenv(key string) error {
56-
envOnce.Do(copyenv)
53+
copyenv()
5754

5855
envLock.Lock()
5956
defer envLock.Unlock()
@@ -67,7 +64,7 @@ func Unsetenv(key string) error {
6764
}
6865

6966
func Getenv(key string) (value string, found bool) {
70-
envOnce.Do(copyenv)
67+
copyenv()
7168
if len(key) == 0 {
7269
return "", false
7370
}
@@ -89,7 +86,7 @@ func Getenv(key string) (value string, found bool) {
8986
}
9087

9188
func Setenv(key, value string) error {
92-
envOnce.Do(copyenv)
89+
copyenv()
9390
if len(key) == 0 {
9491
return EINVAL
9592
}
@@ -124,7 +121,7 @@ func Setenv(key, value string) error {
124121
}
125122

126123
func Clearenv() {
127-
envOnce.Do(copyenv)
124+
copyenv()
128125

129126
envLock.Lock()
130127
defer envLock.Unlock()
@@ -137,7 +134,7 @@ func Clearenv() {
137134
}
138135

139136
func Environ() []string {
140-
envOnce.Do(copyenv)
137+
copyenv()
141138
envLock.RLock()
142139
defer envLock.RUnlock()
143140
a := make([]string, 0, len(envs))

0 commit comments

Comments
 (0)