diff --git a/builtin.cpp b/builtin.cpp index 4604190c3..e7c492859 100644 --- a/builtin.cpp +++ b/builtin.cpp @@ -2655,7 +2655,7 @@ static int builtin_read(parser_t &parser, wchar_t **argv) } } - if (buff.size() < 2 && eof) + if (buff.empty() && eof) { exit_res = 1; } diff --git a/tests/read.in b/tests/read.in index 7cf091129..893797a1b 100644 --- a/tests/read.in +++ b/tests/read.in @@ -38,6 +38,8 @@ echo 'test' | read -l one two three print_vars one two three echo 'foo bar baz' | read -l one two three print_vars one two three +echo -n 'a' | read -l one +echo "$status $one" echo set -l IFS diff --git a/tests/read.out b/tests/read.out index d8cf948d1..43b016db3 100644 --- a/tests/read.out +++ b/tests/read.out @@ -17,6 +17,7 @@ two 1 '' 1 '' 1 'test' 1 '' 1 '' 1 'foo' 1 'bar' 1 ' baz' +0 a 1 'hello' 1 'h' 1 'ello'