diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp index 9764b0bc88c5f..44e74e9f292ec 100644 --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -1750,45 +1750,47 @@ void Debugger::HandleProgressEvent(const lldb::EventSP &event_sp) { // Determine whether the current output file is an interactive terminal with // color support. We assume that if we support ANSI escape codes we support // vt100 escape codes. - File &output = GetOutputFile(); - if (!output.GetIsInteractive() || !output.GetIsTerminalWithColors()) + File &file = GetOutputFile(); + if (!file.GetIsInteractive() || !file.GetIsTerminalWithColors()) return; + StreamSP output = GetAsyncOutputStream(); + // Print over previous line, if any. - output.Printf("\r"); + output->Printf("\r"); if (data->GetCompleted()) { // Clear the current line. - output.Printf("\x1B[2K"); - output.Flush(); + output->Printf("\x1B[2K"); + output->Flush(); return; } const bool use_color = GetUseColor(); llvm::StringRef ansi_prefix = GetShowProgressAnsiPrefix(); if (!ansi_prefix.empty()) - output.Printf( + output->Printf( "%s", ansi::FormatAnsiTerminalCodes(ansi_prefix, use_color).c_str()); // Print the progress message. std::string message = data->GetMessage(); if (data->GetTotal() != UINT64_MAX) { - output.Printf("[%" PRIu64 "/%" PRIu64 "] %s...", data->GetCompleted(), data->GetTotal(), - message.c_str()); + output->Printf("[%" PRIu64 "/%" PRIu64 "] %s...", data->GetCompleted(), + data->GetTotal(), message.c_str()); } else { - output.Printf("%s...", message.c_str()); + output->Printf("%s...", message.c_str()); } llvm::StringRef ansi_suffix = GetShowProgressAnsiSuffix(); if (!ansi_suffix.empty()) - output.Printf( + output->Printf( "%s", ansi::FormatAnsiTerminalCodes(ansi_suffix, use_color).c_str()); // Clear until the end of the line. - output.Printf("\x1B[K\r"); + output->Printf("\x1B[K\r"); // Flush the output. - output.Flush(); + output->Flush(); } bool Debugger::HasIOHandlerThread() { return m_io_handler_thread.IsJoinable(); }