summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Williams <nico@cryptonector.com>2015-09-21 23:24:08 -0500
committerDavid Tolnay <dtolnay@gmail.com>2015-09-22 20:11:54 -0700
commitc4524da3e092adcb4d0af5636ae2309d08418a9e (patch)
tree3825f57a04ff222d840a0a5ba17de0a1aec14a4c
parent58f082d74fa29ead024ff2d695eae874b9b67538 (diff)
EOF after newline in string mishandled (fix #951)
-rw-r--r--src/util.c4
-rwxr-xr-xtests/shtest13
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 <<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