]> granicus.if.org Git - python/commitdiff
PyString_FromFormatV: Massage platform %p output to match what gcc does,
authorTim Peters <tim.peters@gmail.com>
Sat, 25 Aug 2001 03:02:28 +0000 (03:02 +0000)
committerTim Peters <tim.peters@gmail.com>
Sat, 25 Aug 2001 03:02:28 +0000 (03:02 +0000)
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).

Objects/stringobject.c

index 3acc69f9b099025c03d8e4d3acdd81c188e3e03d..9ea32a203d917b05fe5933c327068abc772db8d8 100644 (file)
@@ -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 '%':