diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2017-03-24 14:47:57 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2017-03-24 20:29:29 +0300 |
commit | 8ad62d6b00adf657ef7b468778a0964007aca383 (patch) | |
tree | 4f43e7bbc4af7660bad82fdca27a0df1be903ca5 | |
parent | 1271630db189e60610eeae2c2a7dc72edd91afde (diff) |
Fix diagnostics interleaving characters
-rw-r--r-- | build2/algorithm.cxx | 6 | ||||
-rw-r--r-- | build2/diagnostics | 1 | ||||
-rw-r--r-- | build2/dump.cxx | 3 | ||||
-rw-r--r-- | build2/test/rule.cxx | 3 | ||||
-rw-r--r-- | build2/test/script/builtin.cxx | 3 | ||||
-rw-r--r-- | build2/test/script/parser.cxx | 3 |
6 files changed, 14 insertions, 5 deletions
diff --git a/build2/algorithm.cxx b/build2/algorithm.cxx index 9357632..c9396ef 100644 --- a/build2/algorithm.cxx +++ b/build2/algorithm.cxx @@ -487,7 +487,8 @@ namespace build2 } catch (const std::exception& e) { - *diag_stream << "unhandled exception: " << e; + diag_lock l; + *diag_stream << "unhandled exception: " << e << endl; assert (false); abort (); } @@ -789,7 +790,8 @@ namespace build2 } catch (const std::exception& e) { - *diag_stream << "unhandled exception: " << e; + diag_lock l; + *diag_stream << "unhandled exception: " << e << endl; assert (false); abort (); } diff --git a/build2/diagnostics b/build2/diagnostics index b889fd4..2c2b4bb 100644 --- a/build2/diagnostics +++ b/build2/diagnostics @@ -110,6 +110,7 @@ namespace build2 // Diagnostic facility, base infrastructure. // + using butl::diag_lock; using butl::diag_stream; using butl::diag_epilogue; diff --git a/build2/dump.cxx b/build2/dump.cxx index 7055a78..6d055ae 100644 --- a/build2/dump.cxx +++ b/build2/dump.cxx @@ -345,6 +345,9 @@ namespace build2 auto i (scopes.cbegin ()); assert (&i->second == global_scope); + // We don't lock diag_stream here as dump() is supposed to be called from + // the main thread prior to any other threads being spawned. + // string ind; ostream& os (*diag_stream); dump_scope (os, ind, i); diff --git a/build2/test/rule.cxx b/build2/test/rule.cxx index 25eb0b8..8e39104 100644 --- a/build2/test/rule.cxx +++ b/build2/test/rule.cxx @@ -399,7 +399,8 @@ namespace build2 } catch (const std::exception& e) { - *diag_stream << "unhandled exception: " << e; + diag_lock l; + *diag_stream << "unhandled exception: " << e << endl; assert (false); abort (); } diff --git a/build2/test/script/builtin.cxx b/build2/test/script/builtin.cxx index d96058e..9bd6a1b 100644 --- a/build2/test/script/builtin.cxx +++ b/build2/test/script/builtin.cxx @@ -1361,7 +1361,8 @@ namespace build2 } catch (const std::exception& e) { - *diag_stream << "unhandled exception: " << e; + diag_lock l; + *diag_stream << "unhandled exception: " << e << endl; assert (false); abort (); } diff --git a/build2/test/script/parser.cxx b/build2/test/script/parser.cxx index 0555f2f..d6d77fe 100644 --- a/build2/test/script/parser.cxx +++ b/build2/test/script/parser.cxx @@ -2881,7 +2881,8 @@ namespace build2 } catch (const std::exception& e) { - *diag_stream << "unhandled exception: " << e; + diag_lock l; + *diag_stream << "unhandled exception: " << e << endl; assert (false); abort (); } |