aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/include
diff options
context:
space:
mode:
authorxiphon <xiphon@protonmail.com>2019-11-12 16:05:17 +0000
committerxiphon <xiphon@protonmail.com>2019-11-12 16:07:59 +0000
commit584d057f744fee39560e35a037fec339bee2bf26 (patch)
treef5b6fe27bf5bf09a0ea5cd0c971c38828346ff8c /contrib/epee/include
parentMerge pull request #6074 (diff)
downloadmonero-584d057f744fee39560e35a037fec339bee2bf26.tar.xz
epee: fix console_handlers_binder race, wait for thread to finish
Diffstat (limited to 'contrib/epee/include')
-rw-r--r--contrib/epee/include/console_handler.h9
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)