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':