[Gmp-commit] /var/hg/gmp: Handle %a in __gmp_replacement_vsnprintf
mercurial at gmplib.org
mercurial at gmplib.org
Fri Jan 31 21:38:53 CET 2025
details: /var/hg/gmp/rev/e16148339597
changeset: 18480:e16148339597
user: Marc Glisse <marc.glisse at inria.fr>
date: Fri Jan 31 21:38:50 2025 +0100
description:
Handle %a in __gmp_replacement_vsnprintf
diffstat:
ChangeLog | 1 +
printf/repl-vsnprintf.c | 24 ++++++++++++++++++++++++
2 files changed, 25 insertions(+), 0 deletions(-)
diffs (45 lines):
diff -r a57f396ce062 -r e16148339597 ChangeLog
--- a/ChangeLog Fri Jan 31 19:17:30 2025 +0100
+++ b/ChangeLog Fri Jan 31 21:38:50 2025 +0100
@@ -1,6 +1,7 @@
2025-01-31 Marc Glisse <marc.glisse at inria.fr>
* demos/calc/calc.y (yylex, yyerror): Declare.
+ * printf/repl-vsnprintf.c (__gmp_replacement_vsnprintf): Handle %a.
2025-01-29 Albin Ahlbäck <albin.ahlback at gmail.com>
Marc Glisse <marc.glisse at inria.fr>
diff -r a57f396ce062 -r e16148339597 printf/repl-vsnprintf.c
--- a/printf/repl-vsnprintf.c Fri Jan 31 19:17:30 2025 +0100
+++ b/printf/repl-vsnprintf.c Fri Jan 31 21:38:50 2025 +0100
@@ -264,6 +264,30 @@
}
goto next;
+ case 'A':
+ case 'a':
+ /* 6 for the 2 signs, 0x, point and p.
+ * The exponent is decimal, the rest hexa, pretend everything is
+ * the exponent. The right factor is more like 2.4.
+ * + 2 extra margin for error.
+ * prec + width are added later. */
+ total_width += 6 + floating_sizeof * 3 + 2;
+ if (type == 'L')
+ {
+#if HAVE_LONG_DOUBLE
+ (void) va_arg (ap, long double);
+ total_width += long_double_digits;
+#else
+ ASSERT_FAIL (long double not available);
+#endif
+ }
+ else
+ {
+ (void) va_arg (ap, double);
+ total_width += double_digits;
+ }
+ goto next;
+
case 'h': /* short or char */
case 'j': /* intmax_t */
case 'L': /* long long or long double */
More information about the gmp-commit
mailing list