diff options
| author | gingerBill <bill@gingerbill.org> | 2021-07-29 12:35:11 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-07-29 12:35:11 +0100 |
| commit | 700624119beb5ebf6b9ec4e16ece2ba455c7cae1 (patch) | |
| tree | 202802ca5aa48f154102bc3f3b2d5bf00c1e8982 /src | |
| parent | af32aba7fc327cc1c0b37c4919d809adcaab45dc (diff) | |
Give `begin_error_block` its own recursive mutex
Diffstat (limited to 'src')
| -rw-r--r-- | src/common.cpp | 2 | ||||
| -rw-r--r-- | src/tokenizer.cpp | 6 |
2 files changed, 5 insertions, 3 deletions
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<u8> error_buffer; Array<String> 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); } |