aboutsummaryrefslogtreecommitdiff
path: root/src/error.cpp
diff options
context:
space:
mode:
authorAndreas T Jonsson <mail@andreasjonsson.se>2024-05-16 13:48:44 +0200
committerAndreas T Jonsson <mail@andreasjonsson.se>2024-05-16 13:48:44 +0200
commita93bbf6f922cd59683c9ed1aeaf5bb9940c843c1 (patch)
treed30eb60984886812d2e36a32e501ed68f7453074 /src/error.cpp
parent5541f602335a74c357046a603119c6b49b63e25d (diff)
parentf9fd8f0c25bb0b239e5421c39217d2f8c449911f (diff)
Merge branch 'master' into netbsd-ci
Diffstat (limited to 'src/error.cpp')
-rw-r--r--src/error.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/error.cpp b/src/error.cpp
index 688d1b34a..f5123b969 100644
--- a/src/error.cpp
+++ b/src/error.cpp
@@ -672,7 +672,20 @@ gb_internal int error_value_cmp(void const *a, void const *b) {
return token_pos_cmp(x->pos, y->pos);
}
+gb_internal bool errors_already_printed = false;
+
gb_internal void print_all_errors(void) {
+ if (errors_already_printed) {
+ if (global_error_collector.warning_count.load() == global_error_collector.error_values.count) {
+ for (ErrorValue &ev : global_error_collector.error_values) {
+ array_free(&ev.msg);
+ }
+ array_clear(&global_error_collector.error_values);
+ errors_already_printed = false;
+ }
+ return;
+ }
+
auto const &escape_char = [](gbString res, u8 c) -> gbString {
switch (c) {
case '\n': res = gb_string_append_length(res, "\\n", 2); break;
@@ -827,4 +840,6 @@ gb_internal void print_all_errors(void) {
}
gbFile *f = gb_file_get_standard(gbFileStandard_Error);
gb_file_write(f, res, gb_string_length(res));
+
+ errors_already_printed = true;
} \ No newline at end of file