util/u_printf: do not double print format string with unused arugments
the CL CTS added a new test being printf("\n", "foo"), but we ended up
printing the new line twice. If we can't find a specifier anymore, ignore
the argument as after the loop processing all arguments we'll print the
remaining format string anyway.
Cc: mesa-stable
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30574>
This commit is contained in:
+3
-4
@@ -166,10 +166,9 @@ u_printf_impl(FILE *out, const char *buffer, size_t buffer_size,
|
||||
int arg_size = fmt->arg_sizes[i];
|
||||
size_t spec_pos = util_printf_next_spec_pos(format, 0);
|
||||
|
||||
if (spec_pos == -1) {
|
||||
u_printf_plain(out, format);
|
||||
continue;
|
||||
}
|
||||
/* If we hit an unused argument we skip all remaining ones */
|
||||
if (spec_pos == -1)
|
||||
break;
|
||||
|
||||
const char *token = util_printf_prev_tok(&format[spec_pos]);
|
||||
const char *next_format = &format[spec_pos + 1];
|
||||
|
||||
Reference in New Issue
Block a user