summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Langford <wlangfor@gmail.com>2017-12-04 20:10:56 -0500
committerWilliam Langford <wlangfor@gmail.com>2017-12-04 20:10:56 -0500
commit79ece359819cdd7d033d272af9758ae22204c2ef (patch)
treed3b481f3448ecd50bf4aa109fd6564dd923afede
parentf06deb828a318536b85d68280d429c3a70b21259 (diff)
Fix hang for slurped inputs with trailing newline
-rw-r--r--src/util.c8
-rwxr-xr-xtests/shtest2
2 files changed, 6 insertions, 4 deletions
diff --git a/src/util.c b/src/util.c
index 991598ea..df839520 100644
--- a/src/util.c
+++ b/src/util.c
@@ -442,13 +442,13 @@ jv jq_util_input_next_input(jq_util_input_state *state) {
}
value = jv_parser_next(state->parser);
if (jv_is_valid(state->slurped)) {
+ // When slurping an input that doesn't have a trailing newline,
+ // we might have more than one value on the same line, so let's check
+ // to see if we have more data to parse.
+ has_more = jv_parser_remaining(state->parser);
if (jv_is_valid(value)) {
state->slurped = jv_array_append(state->slurped, value);
value = jv_invalid();
- // When slurping an input that doesn't have a trailing newline,
- // we might have more than one value on the same line, so let's check
- // to see if we have more data to parse.
- has_more = jv_parser_remaining(state->parser);
} else if (jv_invalid_has_msg(jv_copy(value)))
return value; // Not slurped parsed input
} else if (jv_is_valid(value) || jv_invalid_has_msg(jv_copy(value))) {
diff --git a/tests/shtest b/tests/shtest
index 41209b22..80f7d1c9 100755
--- a/tests/shtest
+++ b/tests/shtest
@@ -126,6 +126,8 @@ fi
echo "[1,2,3,4]" > $d/expected
printf "[1,2][3,4]" | $JQ -cs add > $d/out 2>&1
cmp $d/out $d/expected
+printf "[1,2][3,4]\n" | $JQ -cs add > $d/out 2>&1
+cmp $d/out $d/expected
## Test streaming parser