summaryrefslogtreecommitdiffstats
path: root/base/field_trial.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/field_trial.cc')
-rw-r--r--base/field_trial.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/base/field_trial.cc b/base/field_trial.cc
index 2b354d7..0bf39e2 100644
--- a/base/field_trial.cc
+++ b/base/field_trial.cc
@@ -67,9 +67,12 @@ std::string FieldTrial::MakeName(const std::string& name_prefix,
// static
FieldTrialList* FieldTrialList::global_ = NULL;
-FieldTrialList::FieldTrialList()
- : application_start_time_(Time::Now()) {
+// static
+bool FieldTrialList::register_without_global_ = false;
+
+FieldTrialList::FieldTrialList() : application_start_time_(Time::Now()) {
DCHECK(!global_);
+ DCHECK(!register_without_global_);
global_ = this;
}
@@ -86,9 +89,10 @@ FieldTrialList::~FieldTrialList() {
// static
void FieldTrialList::Register(FieldTrial* trial) {
- DCHECK(global_);
- if (!global_)
+ if (!global_) {
+ register_without_global_ = true;
return;
+ }
AutoLock auto_lock(global_->lock_);
DCHECK(!global_->PreLockedFind(trial->name()));
trial->AddRef();