Index: bin/sh/miscbltin.c =================================================================== --- bin/sh/miscbltin.c +++ bin/sh/miscbltin.c @@ -231,6 +231,8 @@ * If there's nothing ready, return an error. */ if (status <= 0) { + while (*ap != NULL) + setvar(*ap++, "", 0); sig = pendingsig; return (128 + (sig != 0 ? sig : SIGALRM)); } Index: bin/sh/tests/builtins/Makefile =================================================================== --- bin/sh/tests/builtins/Makefile +++ bin/sh/tests/builtins/Makefile @@ -141,6 +141,8 @@ ${PACKAGE}FILES+= read7.0 ${PACKAGE}FILES+= read8.0 ${PACKAGE}FILES+= read9.0 +${PACKAGE}FILES+= read10.0 +${PACKAGE}FILES+= read11.0 ${PACKAGE}FILES+= return1.0 ${PACKAGE}FILES+= return2.1 ${PACKAGE}FILES+= return3.1 Index: bin/sh/tests/builtins/read10.0 =================================================================== --- /dev/null +++ bin/sh/tests/builtins/read10.0 @@ -0,0 +1,8 @@ + +set -e + +v=original_value +error=0 +read v < /dev/null || error=$? +[ "$error" -eq 1 ] +[ -z "$v" ] Index: bin/sh/tests/builtins/read11.0 =================================================================== --- /dev/null +++ bin/sh/tests/builtins/read11.0 @@ -0,0 +1,12 @@ + +set -e + +T=`mktemp -u sh-test.XXXXXX` +trap 'rm -f "$T"' 0 +mkfifo "$T" +exec 4<>"$T" +v=original_value +error=0 +read -t 0 v < "$T" || error=$? +[ "$error" -eq 142 ] +[ -z "$v" ]