diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2012-12-18 14:52:56 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-12-18 15:03:58 +0100 |
commit | e3069721d495dc5a208524e119c74751a614d387 (patch) | |
tree | 324cbe46df24c6ebc90810c6adb54665c5b52091 /client/display.c | |
parent | 6934437fc7799e123cd46bd821b3a73e823d2702 (diff) | |
download | bluez-e3069721d495dc5a208524e119c74751a614d387.tar.gz |
client: Check for RL_STATE_DONE before trying to print
Diffstat (limited to 'client/display.c')
-rw-r--r-- | client/display.c | 27 |
1 files 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); + } } |