Skip to content

Commit 922615d

Browse files
committed
Fix data race
1 parent c933e58 commit 922615d

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

Firestore/core/src/firebase/firestore/auth/firebase_credentials_provider_apple.mm

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,19 +120,26 @@
120120
}
121121
};
122122

123+
bool force_refresh = false;
124+
{
125+
std::lock_guard<std::mutex> lock{contents_->mutex};
126+
force_refresh = contents_->force_refresh;
127+
contents_->force_refresh = false;
128+
}
129+
123130
// TODO(wilhuff): Need a better abstraction over a missing auth provider.
124131
if (contents_->auth) {
125-
[contents_->auth getTokenForcingRefresh:contents_->force_refresh
132+
[contents_->auth getTokenForcingRefresh:force_refresh
126133
withCallback:get_token_callback];
127134
} else {
128135
// If there's no Auth provider, call back immediately with a nil
129136
// (unauthenticated) token.
130137
get_token_callback(nil, nil);
131138
}
132-
contents_->force_refresh = false;
133139
}
134140

135141
void FirebaseCredentialsProvider::InvalidateToken() {
142+
std::lock_guard<std::mutex> lock{contents_->mutex};
136143
contents_->force_refresh = true;
137144
}
138145

0 commit comments

Comments
 (0)