diff --git a/src/tools.c b/src/tools.c index 97b8d65b4..723ea6602 100644 --- a/src/tools.c +++ b/src/tools.c @@ -6439,7 +6439,7 @@ uint32_t parse_line(char *in, char *out, size_t *outlen, char **args, int *nbarg err |= PARSE_ERR_TOOMANY; } if (prev_in_arg && !in_arg) { - if (!empty_arg_ptr && arg < argsmax && args[arg] == out + arg_start) + if (!empty_arg_ptr && outpos == arg_start) empty_arg_ptr = begin_new_arg; EMIT_CHAR(0); arg++; @@ -6481,19 +6481,21 @@ uint32_t parse_line(char *in, char *out, size_t *outlen, char **args, int *nbarg } if (prev_in_arg && !in_arg) { - if (!empty_arg_ptr && arg < argsmax && args[arg] == out + arg_start) + if (!empty_arg_ptr && outpos == arg_start) empty_arg_ptr = begin_new_arg; EMIT_CHAR(0); arg++; + arg_start = outpos; } } /* end of output string */ if (in_arg) { - if (!empty_arg_ptr && arg < argsmax && args[arg] == out + arg_start) + if (!empty_arg_ptr && outpos == arg_start) empty_arg_ptr = begin_new_arg; EMIT_CHAR(0); arg++; + arg_start = outpos; } if (quote) {