aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2018-10-12 21:02:59 +0000
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2018-10-12 21:03:59 +0000
commit8f3c79374900ca77c126976036290d10f9999598 (patch)
tree980f4e685b28e37c40076998350c6d8247af40f7 /contrib/epee
parentMerge pull request #4543 (diff)
downloadmonero-8f3c79374900ca77c126976036290d10f9999598.tar.xz
readline_buffer: fix "cursor in prompt" bug
It happens when readline displays a prompt just before switching to a shorter one
Diffstat (limited to 'contrib/epee')
-rw-r--r--contrib/epee/include/readline_buffer.h1
-rw-r--r--contrib/epee/src/readline_buffer.cpp5
2 files changed, 5 insertions, 1 deletions
diff --git a/contrib/epee/include/readline_buffer.h b/contrib/epee/include/readline_buffer.h
index 87c8826cb..5968d243d 100644
--- a/contrib/epee/include/readline_buffer.h
+++ b/contrib/epee/include/readline_buffer.h
@@ -27,6 +27,7 @@ namespace rdln
private:
std::streambuf* m_cout_buf;
+ size_t m_prompt_length;
static std::vector<std::string>& completion_commands();
};
diff --git a/contrib/epee/src/readline_buffer.cpp b/contrib/epee/src/readline_buffer.cpp
index 076a63612..da264471f 100644
--- a/contrib/epee/src/readline_buffer.cpp
+++ b/contrib/epee/src/readline_buffer.cpp
@@ -44,7 +44,7 @@ std::vector<std::string>& rdln::readline_buffer::completion_commands()
}
rdln::readline_buffer::readline_buffer()
-: std::stringbuf(), m_cout_buf(NULL)
+: std::stringbuf(), m_cout_buf(NULL), m_prompt_length(0)
{
current = this;
}
@@ -86,8 +86,11 @@ void rdln::readline_buffer::set_prompt(const std::string& prompt)
if(m_cout_buf == NULL)
return;
boost::lock_guard<boost::mutex> lock(sync_mutex);
+ rl_set_prompt(std::string(m_prompt_length, ' ').c_str());
+ rl_redisplay();
rl_set_prompt(prompt.c_str());
rl_redisplay();
+ m_prompt_length = prompt.size();
}
void rdln::readline_buffer::add_completion(const std::string& command)