aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee
diff options
context:
space:
mode:
authorAlexander Blair <snipa@jagtech.io>2020-01-16 17:32:15 -0800
committerAlexander Blair <snipa@jagtech.io>2020-01-16 17:32:15 -0800
commitfbc15de2cd57353bb6cf74b076d02d463c7aa3fa (patch)
tree5f512c2642c76c89bab8345ba39b37e84332aa1d /contrib/epee
parentMerge pull request #6124 (diff)
parentepee: fix console_handlers_binder race, wait for thread to finish (diff)
downloadmonero-fbc15de2cd57353bb6cf74b076d02d463c7aa3fa.tar.xz
Merge pull request #6125
584d057f epee: fix console_handlers_binder race, wait for thread to finish (xiphon)
Diffstat (limited to 'contrib/epee')
-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)