diff --git a/musique/main.cc b/musique/main.cc index ac31c79..6fe59dc 100644 --- a/musique/main.cc +++ b/musique/main.cc @@ -191,12 +191,19 @@ struct Runner Env::global->force_define("print", +[](Interpreter &interpreter, std::vector args) -> Result { static std::mutex stdio_mutex; - std::lock_guard guard{stdio_mutex}; for (auto it = args.begin(); it != args.end(); ++it) { - std::cout << Try(format(interpreter, *it)); - if (std::next(it) != args.end()) + { + auto result = Try(format(interpreter, *it)); + std::lock_guard guard{stdio_mutex}; + std::cout << result; + } + + if (std::next(it) != args.end()) { + std::lock_guard guard{stdio_mutex}; std::cout << ' '; + } } + std::lock_guard guard{stdio_mutex}; std::cout << std::endl; return {}; });