From 79ece359819cdd7d033d272af9758ae22204c2ef Mon Sep 17 00:00:00 2001 From: William Langford Date: Mon, 4 Dec 2017 20:10:56 -0500 Subject: Fix hang for slurped inputs with trailing newline --- src/util.c | 8 ++++---- tests/shtest | 2 ++ 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 -- cgit v1.2.3