From e7680babe2f768de10d1babaf90ba5b1f24d1a99 Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Fri, 11 Sep 2015 17:06:19 -0700 Subject: [PATCH] Freeze environment reading after saving deps Any reads after the deps are saved won't show up as dependencies later. So panic if new environment variables are read after saving deps. Change-Id: Ia51deaf750804d3b99e69c001939a104c2d8c9f2 --- common/config.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/common/config.go b/common/config.go index 348d0dbb7..f8231f073 100644 --- a/common/config.go +++ b/common/config.go @@ -48,8 +48,9 @@ type config struct { srcDir string // the path of the root source directory - envLock sync.Mutex - envDeps map[string]string + envLock sync.Mutex + envDeps map[string]string + envFrozen bool } type jsonConfigurable interface { @@ -178,6 +179,9 @@ func (c *config) Getenv(key string) string { var exists bool c.envLock.Lock() if val, exists = c.envDeps[key]; !exists { + if c.envFrozen { + panic("Cannot access new environment variables after envdeps are frozen") + } val = os.Getenv(key) c.envDeps[key] = val } @@ -186,6 +190,9 @@ func (c *config) Getenv(key string) string { } func (c *config) EnvDeps() map[string]string { + c.envLock.Lock() + c.envFrozen = true + c.envLock.Unlock() return c.envDeps }