Auto variables have unspecified values after a call to longjmp.
This patch fixes the bug.
regards, Dmitry
diff --git a/builtins/read.def b/builtins/read.def
index 5e2348c..938b62a 100644
--- a/builtins/read.def
+++ b/builtins/read.def
@@ -181,7 +181,8 @@ read_builtin (list)
WORD_LIST *list;
{
register char *varname;
- int size, i, nr, pass_next, saw_escape, eof, opt, retval, code,
print_ps2;
+ int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
+ volatile int i;
int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc,
skip_ctlnul;
int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig,
t_errno;
unsigned int tmsec, tmusec;
On Thu, Nov 24, 2016 at 10:32 PM, Clark Wang <[email protected]> wrote:
> On Fri, Nov 25, 2016 at 7:05 AM, L A Walsh <[email protected]> wrote:
>
>>
>>
>> isabella parakiss wrote:
>>
>>> that's not true https://gist.github.com/fa4efd90376ff2714901e4429fdee734
>>> read successfully reads the data, but then it's discarded by bash
>>>
>>>
>> ----
>> It's discarded by bash because the read doesn't read 10
>> characters within the time limit. If you use -N 5, you get
>> your output. "-t" says it will timeout and return failure if a
>> specified number of characters is not read within timeout period.
>>
>
> The manual for -t says:
>
> If read times out, read saves any partial input read into the specified
> variable *name*.
>
> -clark
>
>
> If timeout is exceeded, then return status is > 128:
>>
>> bash -c '( printf 12345; sleep 2 ) | ( read -t 1 -N 10 v; echo "s=$?,
>> <$v>" )'
>> s=142, <>
>>
>> (status is > 128)
>>
>>
>>>
>>
>