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
+2023-11-11 Johannes Schindelin <johannes.schindelin@gmx.de>
+
+ vasnprintf: Re-enable parsing of directive with I64 (regr. 2023-03-24).
+ * lib/printf-parse.c (PRINTF_PARSE): When parsing a size specifier
+ "I64", increment cp by 3, not 1.
+
2023-11-10 Bruno Haible <bruno@clisp.org>
tests: In multithreaded tests, use random() instead of rand().
unsigned_type = TYPE_ULONGINT;
pointer_type = TYPE_COUNT_LONGINT_POINTER;
}
- cp++;
+ cp += 3;
}
#endif