From 323a3d617c6474cd5d2bd18e0e71aa56e2e32553 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 26 Aug 2014 18:41:01 +0000 Subject: [PATCH] Avoid output of junk text by fs_cli In some cases where `redisplay()` is called immediately after a command is run (e.g. `log ...`) we often get a prompt, junk output, and a second prompt. This is due to a (known) race. We believe we're falling afoul of this code in `el_deletestr`: if (el->el_line.cursor < &el->el_line.buffer[n]) return; Basing the length of text to delete off of the cursor position resolves the issue of junk text, but the real solution is to eliminate the race conditions, which will also resolve the sometimes duplicated prompt. FS-6764 #resolve Thanks-to: Nathan Neulinger --- libs/esl/fs_cli.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/esl/fs_cli.c b/libs/esl/fs_cli.c index ed59792771..43c186b728 100644 --- a/libs/esl/fs_cli.c +++ b/libs/esl/fs_cli.c @@ -1284,7 +1284,7 @@ static void read_config(const char *dft_cfile, const char *cfile) { static void clear_el_buffer(void) { #ifdef HAVE_LIBEDIT const LineInfo *lf = el_line(el); - int len = (int)(lf->lastchar - lf->buffer); + int len = (int)(lf->cursor - lf->buffer); if (global_profile->batch_mode) return; el_deletestr(el, len); memset((char*)lf->buffer, 0, len);