diff --git a/src/common.cpp b/src/common.cpp index fb2b2e0d8..4aea379c3 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -79,7 +79,7 @@ void mutex_lock(RecursiveMutex *m) { gb_mutex_lock(&m->mutex); } bool mutex_try_lock(RecursiveMutex *m) { - return gb_mutex_try_lock(&m->mutex); + return !!gb_mutex_try_lock(&m->mutex); } void mutex_unlock(RecursiveMutex *m) { gb_mutex_unlock(&m->mutex); diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index 9a0a1c17c..7bfcb496b 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -267,6 +267,7 @@ struct ErrorCollector { BlockingMutex mutex; BlockingMutex error_out_mutex; BlockingMutex string_mutex; + RecursiveMutex block_mutex; Array error_buffer; Array errors; @@ -283,6 +284,7 @@ bool any_errors(void) { void init_global_error_collector(void) { mutex_init(&global_error_collector.mutex); + mutex_init(&global_error_collector.block_mutex); mutex_init(&global_error_collector.error_out_mutex); mutex_init(&global_error_collector.string_mutex); array_init(&global_error_collector.errors, heap_allocator()); @@ -357,7 +359,7 @@ AstFile *get_ast_file_from_id(i32 index) { void begin_error_block(void) { - mutex_lock(&global_error_collector.mutex); + mutex_lock(&global_error_collector.block_mutex); global_error_collector.in_block = true; } @@ -373,7 +375,7 @@ void end_error_block(void) { } global_error_collector.in_block = false; - mutex_unlock(&global_error_collector.mutex); + mutex_unlock(&global_error_collector.block_mutex); }