aboutsummaryrefslogtreecommitdiff
path: root/src/tokenizer.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-07-29 12:35:11 +0100
committergingerBill <bill@gingerbill.org>2021-07-29 12:35:11 +0100
commit700624119beb5ebf6b9ec4e16ece2ba455c7cae1 (patch)
tree202802ca5aa48f154102bc3f3b2d5bf00c1e8982 /src/tokenizer.cpp
parentaf32aba7fc327cc1c0b37c4919d809adcaab45dc (diff)
Give `begin_error_block` its own recursive mutex
Diffstat (limited to 'src/tokenizer.cpp')
-rw-r--r--src/tokenizer.cpp6
1 files changed, 4 insertions, 2 deletions
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);
}