]> granicus.if.org Git - jq/commitdiff
Fix hang for slurped inputs with trailing newline
authorWilliam Langford <wlangfor@gmail.com>
Tue, 5 Dec 2017 01:10:56 +0000 (20:10 -0500)
committerWilliam Langford <wlangfor@gmail.com>
Tue, 5 Dec 2017 01:10:56 +0000 (20:10 -0500)
src/util.c
tests/shtest

index 991598ea21f019da05ca1ccddbe0fa086d20e8fd..df839520ac998ac7ca354609715c2cda7b723248 100644 (file)
@@ -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))) {
index 41209b22345d9c590bf999687b46ba2a5c56c1f7..80f7d1c9ebad10f5fad01fa4eaa3c734ec66cd03 100755 (executable)
@@ -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