diff options
-rw-r--r-- | lldb/include/lldb/Utility/Reproducer.h | 8 | ||||
-rw-r--r-- | lldb/source/Utility/Reproducer.cpp | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/lldb/include/lldb/Utility/Reproducer.h b/lldb/include/lldb/Utility/Reproducer.h index cf7887a2c76..4cad298f6d9 100644 --- a/lldb/include/lldb/Utility/Reproducer.h +++ b/lldb/include/lldb/Utility/Reproducer.h @@ -115,7 +115,7 @@ class DataRecorder { public: DataRecorder(FileSpec filename, std::error_code &ec) : m_filename(std::move(filename)), - m_os(m_filename.GetPath(), ec, llvm::sys::fs::F_Text) {} + m_os(m_filename.GetPath(), ec, llvm::sys::fs::F_Text), m_record(true) {} static llvm::Expected<std::unique_ptr<DataRecorder>> Create(FileSpec filename); @@ -128,9 +128,15 @@ public: const FileSpec &GetFilename() { return m_filename; } + void Stop() { + assert(m_record); + m_record = false; + } + private: FileSpec m_filename; llvm::raw_fd_ostream m_os; + bool m_record; }; struct CommandInfo { diff --git a/lldb/source/Utility/Reproducer.cpp b/lldb/source/Utility/Reproducer.cpp index 3e2ffcda281..20d255e0019 100644 --- a/lldb/source/Utility/Reproducer.cpp +++ b/lldb/source/Utility/Reproducer.cpp @@ -247,8 +247,10 @@ DataRecorder *CommandProvider::GetNewDataRecorder() { void CommandProvider::Keep() { std::vector<std::string> files; - for (auto &recorder : m_data_recorders) + for (auto &recorder : m_data_recorders) { + recorder->Stop(); files.push_back(recorder->GetFilename().GetPath()); + } FileSpec file = GetRoot().CopyByAppendingPathComponent(info::file); std::error_code ec; |