Skip to content

Commit

Permalink
mprintf: fix format prefix I32/I64 for windows compilers
Browse files Browse the repository at this point in the history
- Support I32 & I64 (eg: %I64d) for all Win32 builds.

Prior to this change mprintf support for the I format prefix, which is a
Microsoft extension, was dependent on the compiler used.

When Borland compiler support was removed in fd7ef00 the prefix was
then no longer supported for that compiler; however since it's still
possible to build with Borland I'm restoring support for the prefix in
this way.

Reported-by: Paweł Witas

Fixes #12944
Closes #12950
  • Loading branch information
jay committed Feb 24, 2024
1 parent d096809 commit e3a3bb3
Showing 1 changed file with 3 additions and 12 deletions.
15 changes: 3 additions & 12 deletions lib/mprintf.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,16 +48,6 @@
# endif
#endif

/*
* Non-ANSI integer extensions
*/

#if (defined(_WIN32_WCE)) || \
(defined(__MINGW32__)) || \
(defined(_MSC_VER) && (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64))
# define MP_HAVE_INT_EXTENSIONS
#endif

/*
* Max integer data types that mprintf.c is capable
*/
Expand Down Expand Up @@ -349,8 +339,9 @@ static int parsefmt(const char *format,
case 'h':
flags |= FLAGS_SHORT;
break;
#if defined(MP_HAVE_INT_EXTENSIONS)
#if defined(_WIN32) || defined(_WIN32_WCE)
case 'I':
/* Non-ANSI integer extensions I32 I64 */
if((fmt[0] == '3') && (fmt[1] == '2')) {
flags |= FLAGS_LONG;
fmt += 2;
Expand All @@ -367,7 +358,7 @@ static int parsefmt(const char *format,
#endif
}
break;
#endif
#endif /* _WIN32 || _WIN32_WCE */
case 'l':
if(flags & FLAGS_LONG)
flags |= FLAGS_LONGLONG;
Expand Down

0 comments on commit e3a3bb3

Please sign in to comment.