diff options
author | xiphon <xiphon@protonmail.com> | 2019-11-12 16:05:17 +0000 |
---|---|---|
committer | xiphon <xiphon@protonmail.com> | 2019-11-12 16:07:59 +0000 |
commit | 584d057f744fee39560e35a037fec339bee2bf26 (patch) | |
tree | f5b6fe27bf5bf09a0ea5cd0c971c38828346ff8c /contrib/epee/include/console_handler.h | |
parent | Merge pull request #6074 (diff) | |
download | monero-584d057f744fee39560e35a037fec339bee2bf26.tar.xz |
epee: fix console_handlers_binder race, wait for thread to finish
Diffstat (limited to 'contrib/epee/include/console_handler.h')
-rw-r--r-- | contrib/epee/include/console_handler.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/contrib/epee/include/console_handler.h b/contrib/epee/include/console_handler.h index 13747b0c8..1b716fca4 100644 --- a/contrib/epee/include/console_handler.h +++ b/contrib/epee/include/console_handler.h @@ -605,10 +605,17 @@ eof: std::unique_ptr<boost::thread> m_console_thread; async_console_handler m_console_handler; public: + ~console_handlers_binder() { + stop_handling(); + if (m_console_thread.get() != nullptr) + { + m_console_thread->join(); + } + } + bool start_handling(std::function<std::string(void)> prompt, const std::string& usage_string = "", std::function<void(void)> exit_handler = NULL) { m_console_thread.reset(new boost::thread(boost::bind(&console_handlers_binder::run_handling, this, prompt, usage_string, exit_handler))); - m_console_thread->detach(); return true; } bool start_handling(const std::string &prompt, const std::string& usage_string = "", std::function<void(void)> exit_handler = NULL) |