diff options
author | Nicolas Williams <nico@cryptonector.com> | 2015-09-21 23:24:08 -0500 |
---|---|---|
committer | David Tolnay <dtolnay@gmail.com> | 2015-09-22 20:11:54 -0700 |
commit | c4524da3e092adcb4d0af5636ae2309d08418a9e (patch) | |
tree | 3825f57a04ff222d840a0a5ba17de0a1aec14a4c | |
parent | 58f082d74fa29ead024ff2d695eae874b9b67538 (diff) |
EOF after newline in string mishandled (fix #951)
-rw-r--r-- | src/util.c | 4 | ||||
-rwxr-xr-x | tests/shtest | 13 |
2 files changed, 13 insertions, 4 deletions
@@ -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 <<EOF +jq: error (at <stdin>: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 |