From 38841dd46e6bb5879200c0a8e2f879c8cfa005d6 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 19 Aug 2021 17:38:18 +0100 Subject: Fix race condition from `add_entity_use` due to Entity.identifier --- src/check_decl.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/check_decl.cpp') diff --git a/src/check_decl.cpp b/src/check_decl.cpp index c8bacb9b2..4cce25097 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -350,12 +350,12 @@ void override_entity_in_scope(Entity *original_entity, Entity *new_entity) { original_entity->type = new_entity->type; original_entity->aliased_of = new_entity; - if (original_entity->identifier == nullptr) { - original_entity->identifier = new_entity->identifier; - } - if (original_entity->identifier != nullptr && - original_entity->identifier->kind == Ast_Ident) { - original_entity->identifier->Ident.entity = new_entity; + Ast *empty_ident = nullptr; + original_entity->identifier.compare_exchange_strong(empty_ident, new_entity->identifier); + + if (original_entity->identifier.load() != nullptr && + original_entity->identifier.load()->kind == Ast_Ident) { + original_entity->identifier.load()->Ident.entity = new_entity; } // IMPORTANT NOTE(bill, 2021-04-10): copy only the variants -- cgit v1.2.3