diff options
Diffstat (limited to 'src/util.c')
-rw-r--r-- | src/util.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -410,6 +410,7 @@ jv jq_util_input_get_current_line(jq_state* jq) { // When slurping, it returns just one value jv jq_util_input_next_input(jq_util_input_state *state) { int is_last = 0; + int has_more = 0; jv value = jv_invalid(); // need more input do { if (state->parser == NULL) { @@ -444,13 +445,17 @@ jv jq_util_input_next_input(jq_util_input_state *state) { 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))) { return value; } } - } while (!is_last); + } while (!is_last || has_more); if (jv_is_valid(state->slurped)) { value = state->slurped; |