From c4524da3e092adcb4d0af5636ae2309d08418a9e Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Mon, 21 Sep 2015 23:24:08 -0500 Subject: EOF after newline in string mishandled (fix #951) --- src/util.c | 4 +--- tests/shtest | 13 ++++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/util.c b/src/util.c index e18a91b6..3f7cab8d 100644 --- a/src/util.c +++ b/src/util.c @@ -435,10 +435,8 @@ jv jq_util_input_next_input(jq_util_input_state *state) { } else { if (jv_parser_remaining(state->parser) == 0) { is_last = jq_util_input_read_more(state); - if (is_last && state->buf_valid_len == 0) { + if (is_last && state->buf_valid_len == 0) value = jv_invalid(); - break; - } jv_parser_set_buf(state->parser, state->buf, state->buf_valid_len, !is_last); } value = jv_parser_next(state->parser); diff --git a/tests/shtest b/tests/shtest index 6e7690e4..1a956130 100755 --- a/tests/shtest +++ b/tests/shtest @@ -109,10 +109,21 @@ printf '1' | $JQ -ce --seq . > $d/out 2>&1 cmp $d/out $d/expected cat > $d/expected <:1): Unfinished abandoned text at EOF at line 2, column 0 EOF -printf '1\n' | $JQ -cen --seq '[inputs] == []' >/dev/null 2> $d/out +if printf '1\n' | $JQ -cen --seq '[inputs] == []' >/dev/null 2> $d/out; then + printf 'Error expected but jq exited successfully\n' 1>&2 + exit 2 +fi cmp $d/out $d/expected +# Regression test for #951 +printf '"a\n' > $d/input +if $VALGRIND $Q $JQ -e . $d/input; then + printf 'Issue #951 is back?\n' 1>&2 + exit 2 +fi + ## Test streaming parser ## If we add an option to stream to the `import ... as $symbol;` directive -- cgit v1.2.3