From e3069721d495dc5a208524e119c74751a614d387 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 18 Dec 2012 14:52:56 +0100 Subject: [PATCH] client: Check for RL_STATE_DONE before trying to print --- client/display.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/client/display.c b/client/display.c index 197049d64..bc891af94 100644 --- a/client/display.c +++ b/client/display.c @@ -36,22 +36,29 @@ void rl_printf(const char *fmt, ...) { va_list args; + bool save_input; char *saved_line; int saved_point; - saved_point = rl_point; - saved_line = rl_copy_text(0, rl_end); - rl_save_prompt(); - rl_replace_line("", 0); - rl_redisplay(); + save_input = !RL_ISSTATE(RL_STATE_DONE); + + if (save_input) { + saved_point = rl_point; + saved_line = rl_copy_text(0, rl_end); + rl_save_prompt(); + rl_replace_line("", 0); + rl_redisplay(); + } va_start(args, fmt); vprintf(fmt, args); va_end(args); - rl_restore_prompt(); - rl_replace_line(saved_line, 0); - rl_point = saved_point; - rl_redisplay(); - free(saved_line); + if (save_input) { + rl_restore_prompt(); + rl_replace_line(saved_line, 0); + rl_point = saved_point; + rl_redisplay(); + free(saved_line); + } } -- 2.47.3