Add sync lock on stop
Also added and moved two free's hoping to fix leaks.
This commit is contained in:
parent
d0a610183a
commit
67dd4933e6
1 changed files with 4 additions and 5 deletions
|
@ -61,7 +61,8 @@ void rdln::readline_buffer::start()
|
||||||
|
|
||||||
void rdln::readline_buffer::stop()
|
void rdln::readline_buffer::stop()
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(process_mutex);
|
std::unique_lock<std::mutex> lock_process(process_mutex);
|
||||||
|
std::unique_lock<std::mutex> lock_sync(sync_mutex);
|
||||||
have_line.notify_all();
|
have_line.notify_all();
|
||||||
if(m_cout_buf == NULL)
|
if(m_cout_buf == NULL)
|
||||||
return;
|
return;
|
||||||
|
@ -152,9 +153,7 @@ static int process_input()
|
||||||
|
|
||||||
static void handle_line(char* line)
|
static void handle_line(char* line)
|
||||||
{
|
{
|
||||||
// This function never gets called now as we are trapping newlines.
|
free(line);
|
||||||
// However, it still needs to be present for readline to know we are
|
|
||||||
// manually handling lines.
|
|
||||||
rl_done = 1;
|
rl_done = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -166,6 +165,7 @@ static int handle_enter(int x, int y)
|
||||||
|
|
||||||
line = rl_copy_text(0, rl_end);
|
line = rl_copy_text(0, rl_end);
|
||||||
std::string test_line = line;
|
std::string test_line = line;
|
||||||
|
free(line);
|
||||||
boost::trim_right(test_line);
|
boost::trim_right(test_line);
|
||||||
|
|
||||||
rl_crlf();
|
rl_crlf();
|
||||||
|
@ -191,7 +191,6 @@ static int handle_enter(int x, int y)
|
||||||
add_history(test_line.c_str());
|
add_history(test_line.c_str());
|
||||||
history_set_pos(history_length);
|
history_set_pos(history_length);
|
||||||
}
|
}
|
||||||
free(line);
|
|
||||||
|
|
||||||
if(last_line != "exit" && last_line != "q")
|
if(last_line != "exit" && last_line != "q")
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue