66 lines
1.9 KiB
Diff
66 lines
1.9 KiB
Diff
|
https://github.com/fish-shell/fish-shell/commit/5dc78dd858c28dcfd564ee50e56ccd33fc0b39dc
|
||
|
|
||
|
fix regression involving `read` from scripts
|
||
|
|
||
|
diff --git a/src/input.cpp b/src/input.cpp
|
||
|
index 1cdb151b3..d4dc16698 100644
|
||
|
--- a/src/input.cpp
|
||
|
+++ b/src/input.cpp
|
||
|
@@ -189,7 +189,7 @@ static std::vector<terminfo_mapping_t> terminfo_mappings;
|
||
|
/// List of all terminfo mappings.
|
||
|
static std::vector<terminfo_mapping_t> mappings;
|
||
|
|
||
|
-/// Set to true when the input subsytem has been initialized.
|
||
|
+/// Set to true when the input subsystem has been initialized.
|
||
|
bool input_initialized = false;
|
||
|
|
||
|
/// Initialize terminfo.
|
||
|
@@ -307,7 +307,6 @@ void init_input() {
|
||
|
}
|
||
|
|
||
|
input_initialized = true;
|
||
|
- return;
|
||
|
}
|
||
|
|
||
|
void input_destroy() {
|
||
|
diff --git a/src/reader.cpp b/src/reader.cpp
|
||
|
index bd278ad6a..1e0e05698 100644
|
||
|
--- a/src/reader.cpp
|
||
|
+++ b/src/reader.cpp
|
||
|
@@ -1563,10 +1563,10 @@ static bool check_for_orphaned_process(unsigned long loop_count, pid_t shell_pgi
|
||
|
|
||
|
/// Initialize data for interactive use.
|
||
|
static void reader_interactive_init() {
|
||
|
- assert(input_initialized);
|
||
|
// See if we are running interactively.
|
||
|
pid_t shell_pgid;
|
||
|
|
||
|
+ if (!input_initialized) init_input();
|
||
|
kill_init();
|
||
|
shell_pgid = getpgrp();
|
||
|
|
||
|
diff --git a/tests/read.in b/tests/read.in
|
||
|
index febc2968f..0fe31ec01 100644
|
||
|
--- a/tests/read.in
|
||
|
+++ b/tests/read.in
|
||
|
@@ -191,3 +191,6 @@ end
|
||
|
if test (string length "$x") -ne $FISH_READ_BYTE_LIMIT
|
||
|
echo reading the max amount of data with --nchars failed the length test
|
||
|
end
|
||
|
+
|
||
|
+echo '# Confirm reading non-interactively works (#4206 regression)'
|
||
|
+echo abc\ndef | ../test/root/bin/fish -i -c 'read a; read b; show $a; show $b'
|
||
|
diff --git a/tests/read.out b/tests/read.out
|
||
|
index d35a9146a..88b445a40 100644
|
||
|
--- a/tests/read.out
|
||
|
+++ b/tests/read.out
|
||
|
@@ -58,3 +58,8 @@ newline
|
||
|
|
||
|
# chunked read tests
|
||
|
Chunked reads test pass
|
||
|
+# Confirm reading non-interactively works (#4206 regression)
|
||
|
+count=1
|
||
|
+|abc|
|
||
|
+count=1
|
||
|
+|def|
|