Fix bug reported by Per Lindqvist: "%#06x" % 1 stuck the 0 padding
in front of the 0x, like such: "0000x1".
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index f037f96..283e219 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -855,8 +855,20 @@
if (len < 0)
goto error;
sign = (c == 'd');
- if (flags&F_ZERO)
+ if (flags&F_ZERO) {
fill = '0';
+ if ((flags&F_ALT) &&
+ (c == 'x' || c == 'X') &&
+ buf[0] == '0' && buf[1] == c) {
+ *res++ = *buf++;
+ *res++ = *buf++;
+ rescnt -= 2;
+ len -= 2;
+ width -= 2;
+ if (width < 0)
+ width = 0;
+ }
+ }
break;
case 'e':
case 'E':