File tree Expand file tree Collapse file tree 1 file changed +7
-10
lines changed Expand file tree Collapse file tree 1 file changed +7
-10
lines changed Original file line number Diff line number Diff line change @@ -14,9 +14,6 @@ import (
14
14
)
15
15
16
16
var (
17
- // envOnce guards initialization by copyenv, which populates env.
18
- envOnce sync.Once
19
-
20
17
// envLock guards env and envs.
21
18
envLock sync.RWMutex
22
19
31
28
32
29
func runtime_envs () []string // in package runtime
33
30
34
- func copyenv () {
31
+ var copyenv = sync . OnceFunc ( func () {
35
32
env = make (map [string ]int )
36
33
for i , s := range envs {
37
34
for j := 0 ; j < len (s ); j ++ {
@@ -50,10 +47,10 @@ func copyenv() {
50
47
}
51
48
}
52
49
}
53
- }
50
+ })
54
51
55
52
func Unsetenv (key string ) error {
56
- envOnce . Do ( copyenv )
53
+ copyenv ( )
57
54
58
55
envLock .Lock ()
59
56
defer envLock .Unlock ()
@@ -67,7 +64,7 @@ func Unsetenv(key string) error {
67
64
}
68
65
69
66
func Getenv (key string ) (value string , found bool ) {
70
- envOnce . Do ( copyenv )
67
+ copyenv ( )
71
68
if len (key ) == 0 {
72
69
return "" , false
73
70
}
@@ -89,7 +86,7 @@ func Getenv(key string) (value string, found bool) {
89
86
}
90
87
91
88
func Setenv (key , value string ) error {
92
- envOnce . Do ( copyenv )
89
+ copyenv ( )
93
90
if len (key ) == 0 {
94
91
return EINVAL
95
92
}
@@ -124,7 +121,7 @@ func Setenv(key, value string) error {
124
121
}
125
122
126
123
func Clearenv () {
127
- envOnce . Do ( copyenv )
124
+ copyenv ( )
128
125
129
126
envLock .Lock ()
130
127
defer envLock .Unlock ()
@@ -137,7 +134,7 @@ func Clearenv() {
137
134
}
138
135
139
136
func Environ () []string {
140
- envOnce . Do ( copyenv )
137
+ copyenv ( )
141
138
envLock .RLock ()
142
139
defer envLock .RUnlock ()
143
140
a := make ([]string , 0 , len (envs ))
You can’t perform that action at this time.
0 commit comments