Skip to content
Snippets Groups Projects
Commit 27d22d87 authored by Damien George's avatar Damien George
Browse files

py/mpprint: Support printing %ld and %lu formats on 64-bit archs.

Fixes issue #4702.
parent 8402c26c
No related branches found
No related tags found
No related merge requests found
...@@ -503,22 +503,28 @@ int mp_vprintf(const mp_print_t *print, const char *fmt, va_list args) { ...@@ -503,22 +503,28 @@ int mp_vprintf(const mp_print_t *print, const char *fmt, va_list args) {
chrs += mp_print_strn(print, str, prec, flags, fill, width); chrs += mp_print_strn(print, str, prec, flags, fill, width);
break; break;
} }
case 'u': case 'd': {
chrs += mp_print_int(print, va_arg(args, unsigned int), 0, 10, 'a', flags, fill, width); mp_int_t val;
break; if (long_arg) {
case 'd': val = va_arg(args, long int);
chrs += mp_print_int(print, va_arg(args, int), 1, 10, 'a', flags, fill, width); } else {
val = va_arg(args, int);
}
chrs += mp_print_int(print, val, 1, 10, 'a', flags, fill, width);
break; break;
}
case 'u':
case 'x': case 'x':
case 'X': { case 'X': {
char fmt_c = *fmt - 'X' + 'A'; int base = 16 - ((*fmt + 1) & 6); // maps char u/x/X to base 10/16/16
char fmt_c = (*fmt & 0xf0) - 'P' + 'A'; // maps char u/x/X to char a/a/A
mp_uint_t val; mp_uint_t val;
if (long_arg) { if (long_arg) {
val = va_arg(args, unsigned long int); val = va_arg(args, unsigned long int);
} else { } else {
val = va_arg(args, unsigned int); val = va_arg(args, unsigned int);
} }
chrs += mp_print_int(print, val, 0, 16, fmt_c, flags, fill, width); chrs += mp_print_int(print, val, 0, base, fmt_c, flags, fill, width);
break; break;
} }
case 'p': case 'p':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment