aboutsummaryrefslogtreecommitdiff
path: root/src/checker.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-08-19 17:38:18 +0100
committergingerBill <bill@gingerbill.org>2021-08-19 17:38:18 +0100
commit38841dd46e6bb5879200c0a8e2f879c8cfa005d6 (patch)
treed742d0f758224110243741ae1d99f4d7e51ab3da /src/checker.cpp
parente722af7f6126d821ec2847769b234ed18f61518c (diff)
Fix race condition from `add_entity_use` due to Entity.identifier
Diffstat (limited to 'src/checker.cpp')
-rw-r--r--src/checker.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/checker.cpp b/src/checker.cpp
index 4ae5f5b1c..cd023998c 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -1297,9 +1297,9 @@ void add_entity_use(CheckerContext *c, Ast *identifier, Entity *entity) {
if (identifier->kind != Ast_Ident) {
return;
}
- if (entity->identifier == nullptr) {
- entity->identifier = identifier;
- }
+ Ast *empty_ident = nullptr;
+ entity->identifier.compare_exchange_strong(empty_ident, identifier);
+
identifier->Ident.entity = entity;
if (c->info->allow_identifier_uses) {