mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Fix \watch's interaction with libedit on ^C.
When you hit ^C, the terminal driver in Unix-like systems echoes "^C" as well as sending an interrupt signal (depending on stty settings). At least libedit (but maybe also libreadline) is then confused about the current cursor location, and corrupts the display if you try to scroll back. Fix, by moving to a new line before the next prompt is displayed. Back-patch to all supported released. Author: Pavel Stehule <pavel.stehule@gmail.com> Reported-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/3278793.1626198638%40sss.pgh.pa.us
This commit is contained in:
parent
f1c779e2b9
commit
ab7fef0acf
@ -4992,6 +4992,14 @@ do_watch(PQExpBuffer query_buf, double sleep)
|
||||
sigint_interrupt_enabled = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* If the terminal driver echoed "^C", libedit/libreadline might be
|
||||
* confused about the cursor position. Therefore, inject a newline
|
||||
* before the next prompt is displayed.
|
||||
*/
|
||||
fprintf(stdout, "\n");
|
||||
fflush(stdout);
|
||||
|
||||
pg_free(title);
|
||||
return (res >= 0);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user