diff options
author | <shinichiro.hamaji@gmail.com> | 2008-10-17 11:53:23 +0000 |
---|---|---|
committer | <shinichiro.hamaji@gmail.com> | 2008-10-17 11:53:23 +0000 |
commit | 2ed196e07a231a5cc4463c5fa05b8e9e4a79c216 (patch) | |
tree | a5d5822fc3a3087ff883cfeef9086aba9621de26 /src | |
parent | 364832195d0d333910cf63cf98ac16fdb82ebd55 (diff) | |
download | glog-2ed196e07a231a5cc4463c5fa05b8e9e4a79c216.tar.gz glog-2ed196e07a231a5cc4463c5fa05b8e9e4a79c216.tar.bz2 glog-2ed196e07a231a5cc4463c5fa05b8e9e4a79c216.zip |
Fix a bug: vmodule didn't work with gflags. Since
gflags isn't initialized when REGISTER_MODULE_INITIALIZER is invoked,
we couldn't initialize vmodule_list properly. Modified to call
VLOG2Initializer in the first call of InitVLOG3__.
git-svn-id: https://google-glog.googlecode.com/svn/trunk@8 eb4d4688-79bd-11dd-afb4-1d65580434c0
Diffstat (limited to 'src')
-rw-r--r-- | src/vlog_is_on.cc | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/vlog_is_on.cc b/src/vlog_is_on.cc index 4f2a552..877751d 100644 --- a/src/vlog_is_on.cc +++ b/src/vlog_is_on.cc @@ -88,8 +88,9 @@ static VModuleInfo* vmodule_list = 0; // Boolean initialization flag. static bool inited_vmodule = false; +// L >= vmodule_lock. static void VLOG2Initializer() { - MutexLock l(&vmodule_lock); + vmodule_lock.AssertHeld(); // Can now parse --vmodule flag and initialize mapping of module-specific // logging levels. inited_vmodule = false; @@ -120,8 +121,6 @@ static void VLOG2Initializer() { inited_vmodule = true; } -REGISTER_MODULE_INITIALIZER(vlog_is_on, VLOG2Initializer()); - // This can be called very early, so we use SpinLock and RAW_VLOG here. int SetVLOGLevel(const char* module_pattern, int log_level) { int result = FLAGS_v; @@ -161,12 +160,8 @@ bool InitVLOG3__(int32** site_flag, int32* site_default, const char* fname, int32 verbose_level) { MutexLock l(&vmodule_lock); bool read_vmodule_flag = inited_vmodule; - if (!read_vmodule_flag && vmodule_list == 0) { - // The command line --vmodule flags haven't been parsed - // and nothing was set with SetVLOGLevel yet, - // but *site_default (usually FLAGS_v) might be manually set - // by some early-executing code, or else it's still 0. - return *site_default >= verbose_level; + if (!read_vmodule_flag) { + VLOG2Initializer(); } // protect the errno global in case someone writes: |