From: Tim Peters <tim.peters@gmail.com> Date: Sat, 25 Aug 2001 03:02:28 +0000 (+0000) Subject: PyString_FromFormatV: Massage platform %p output to match what gcc does, X-Git-Tag: v2.2a3~326 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6af5bbb5653a9b77102369d60fb18d3bc896bf92;p=python PyString_FromFormatV: Massage platform %p output to match what gcc does, at least in the first two characters. %p is ill-defined, and people will forever commit bad tests otherwise ("bad" in the sense that they fall over (at least on Windows) for lack of a leading '0x'; 5 of the 7 tests in test_repr.py failed on Windows for that reason this time around). --- diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 3acc69f9b0..9ea32a203d 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -269,6 +269,14 @@ PyString_FromFormatV(const char *format, va_list vargs) break; case 'p': sprintf(s, "%p", va_arg(vargs, void*)); + /* %p is ill-defined: ensure leading 0x. */ + if (s[1] == 'X') + s[1] = 'x'; + else if (s[1] != 'x') { + memmove(s+2, s, strlen(s)+1); + s[0] = '0'; + s[1] = 'x'; + } s += strlen(s); break; case '%':