Introduction
Introduction Statistics Contact Development Disclaimer Help
Fix infinite loop caused by search prompt - sacc - sacc(omys), simple console g…
git clone git://bitreich.org/sacc/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65…
Log
Files
Refs
Tags
LICENSE
---
commit cef484cbcf0ba83757f853f235a6cc7497448fa2
parent 90a9d3c81f27588c62faa43f22d946740042a3ce
Author: Rainer Holzner <[email protected]>
Date: Fri, 20 Dec 2024 18:01:52 +0100
Fix infinite loop caused by search prompt
This fixes an infinite loop when the user selects item type 7 (IND),
enters 1 or more characters and decides to cancel the search prompt
by pressing Ctrl+D without deleting the input line.
Note that the fixed version requires the user to press Ctrl-D twice
in this case.
Diffstat:
M ui_ti.c | 3 ++-
M ui_txt.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
---
diff --git a/ui_ti.c b/ui_ti.c
@@ -97,7 +97,7 @@ uiprompt(char *fmt, ...)
putp(tparm(restore_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0));
fflush(stdout);
- if (r == -1) {
+ if (r == -1 || feof(stdin)) {
clearerr(stdin);
clear(&input);
} else if (input[r - 1] == '\n') {
@@ -531,6 +531,7 @@ uiselectitem(Item *entry)
case _key_searchprev:
searchinline(searchstr, entry, -1);
continue;
+ case EOF:
case 0x04:
case _key_quit:
quit:
diff --git a/ui_txt.c b/ui_txt.c
@@ -124,7 +124,7 @@ uiprompt(char *fmt, ...)
mbsprint(bufout, columns);
fflush(stdout);
- if ((r = getline(&input, &n, stdin)) == -1) {
+ if ((r = getline(&input, &n, stdin)) == -1 || feof(stdin)) {
clearerr(stdin);
clear(&input);
putchar('\n');
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.