]> Savannah Git Hosting - gnulib.git/commit
vasnprintf: Re-enable parsing of directive with I64 (regr. 2023-03-24).
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Sat, 11 Nov 2023 21:53:33 +0000 (22:53 +0100)
committerBruno Haible <bruno@clisp.org>
Sat, 11 Nov 2023 22:39:55 +0000 (23:39 +0100)
commit8df42718cc5d622220e02e2f015e4a41a3065e66
treee61381b94ea6ccb965385a44223d1a81cb7b1cb9
parent5c8fc31ab5db3372739a7ae9bf579cef946408ad
vasnprintf: Re-enable parsing of directive with I64 (regr. 2023-03-24).

In 480a59ba60 (*printf-posix: ISO C 23: Support size specifiers 'wN' and
'wfN'., 2023-03-24), a major refactoring hides a bug in the conversion
of the code handling Windows' "%I64*" family of printf() formats:
before the refactoring, the "64" part was skipped (as desired), but
afterwards that part is not skipped and therefore the '6' is mistaken
for a conversion character. Which is invalid, of course, causing the
code to error out.

Fix this by skipping the "64" part again.

This bug was uncovered by the Git for Windows project when gettext
v0.22.3 switched to the gnulib code as work horse of the
libintl_vsnprintf() function.

* lib/printf-parse.c (PRINTF_PARSE): When parsing a size specifier
"I64", increment cp by 3, not 1.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Copyright-paperwork-exempt: Yes
ChangeLog
lib/printf-parse.c