0001-Drop-support-for-MSVCRT-s-I64-format-strings.patch
text/x-patch
Filename: 0001-Drop-support-for-MSVCRT-s-I64-format-strings.patch
Type: text/x-patch
Part: 0
Message:
Re: PRI?64 vs Visual Studio (2022)
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch 0001
Subject: Drop support for MSVCRT's %I64 format strings.
| File | + | − |
|---|---|---|
| src/port/snprintf.c | 0 | 44 |
From 213d845611e5b357b6ff8af84f5365d96c32f51b Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Wed, 19 Nov 2025 13:45:27 +1300
Subject: [PATCH 1/2] Drop support for MSVCRT's %I64 format strings.
MSVCRT predated C99 and invented non-standard placeholders for 64-bit
numbers, and then later used them in standard macros when C99
<inttypes.h> arrived. Those macros just use %lld etc when building with
UCRT, so there should be no way for our interposed sprintf.c code to
receive the pre-standard kind. Time to drop the code that parses them.
That code was in fact already dead when commit 962da900 landed, as we'd
officially disclaimed MSVCRT support a couple of weeks earlier in commit
1758d424, but patch development overlapped and the history hadn't been
investigated.
---
src/port/snprintf.c | 44 --------------------------------------------
1 file changed, 44 deletions(-)
diff --git a/src/port/snprintf.c b/src/port/snprintf.c
index d7f18b42d19..dded6c3f65b 100644
--- a/src/port/snprintf.c
+++ b/src/port/snprintf.c
@@ -557,28 +557,6 @@ nextch2:
fmtpos = accum;
accum = 0;
goto nextch2;
-#ifdef WIN32
- case 'I':
- /* Windows PRI*{32,64,PTR} size */
- if (format[0] == '3' && format[1] == '2')
- format += 2;
- else if (format[0] == '6' && format[1] == '4')
- {
- format += 2;
- longlongflag = 1;
- }
- else
- {
-#if SIZEOF_VOID_P == SIZEOF_LONG
- longflag = 1;
-#elif SIZEOF_VOID_P == SIZEOF_LONG_LONG
- longlongflag = 1;
-#else
-#error "cannot find integer type of the same size as intptr_t"
-#endif
- }
- goto nextch2;
-#endif
case 'l':
if (longflag)
longlongflag = 1;
@@ -842,28 +820,6 @@ nextch1:
fmtpos = accum;
accum = 0;
goto nextch1;
-#ifdef WIN32
- case 'I':
- /* Windows PRI*{32,64,PTR} size */
- if (format[0] == '3' && format[1] == '2')
- format += 2;
- else if (format[0] == '6' && format[1] == '4')
- {
- format += 2;
- longlongflag = 1;
- }
- else
- {
-#if SIZEOF_VOID_P == SIZEOF_LONG
- longflag = 1;
-#elif SIZEOF_VOID_P == SIZEOF_LONG_LONG
- longlongflag = 1;
-#else
-#error "cannot find integer type of the same size as intptr_t"
-#endif
- }
- goto nextch1;
-#endif
case 'l':
if (longflag)
longlongflag = 1;
--
2.51.2