summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author <shinichiro.hamaji@gmail.com>2008-10-17 11:53:23 +0000
committer <shinichiro.hamaji@gmail.com>2008-10-17 11:53:23 +0000
commit2ed196e07a231a5cc4463c5fa05b8e9e4a79c216 (patch)
treea5d5822fc3a3087ff883cfeef9086aba9621de26 /src
parent364832195d0d333910cf63cf98ac16fdb82ebd55 (diff)
downloadglog-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.cc13
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: