From d0dd1b2d80ab32083f97a4753200758731155ade Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 2 Apr 2025 18:23:08 +0100 Subject: Add mutex for `lb_handle_objc_find_or_register_selector` --- src/llvm_backend_utility.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/llvm_backend_utility.cpp') diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index e06369be3..a21039360 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -2096,7 +2096,11 @@ gb_internal void lb_set_wasm_export_attributes(LLVMValueRef value, String export gb_internal lbAddr lb_handle_objc_find_or_register_selector(lbProcedure *p, String const &name) { + mutex_lock(&p->module->objc_selectors_mutex); + defer (mutex_unlock(&p->module->objc_selectors_mutex)); + lbObjcRef *found = string_map_get(&p->module->objc_selectors, name); + if (found) { return found->local_module_addr; } @@ -2118,7 +2122,10 @@ gb_internal lbAddr lb_handle_objc_find_or_register_selector(lbProcedure *p, Stri lbAddr default_addr = lb_add_global_generated_with_name(default_module, t_objc_SEL, {}, make_string(cast(u8 const *)global_name, gb_string_length(global_name)), &entity); + + mutex_lock(&default_module->objc_selectors_mutex); string_map_set(&default_module->objc_selectors, name, lbObjcRef{entity, default_addr}); + mutex_unlock(&default_module->objc_selectors_mutex); } lbValue ptr = lb_find_value_from_entity(p->module, entity); -- cgit v1.2.3