Change 30003 by [EMAIL PROTECTED] on 2007/01/26 11:36:22
Integrate:
[ 28408]
Subject: [PATCH] Re: [perl #39530] printf: bad formatting of
hexadecimal conversion of binary string using vector flag
From: Dominic Dunlop <[EMAIL PROTECTED]>
Date: Tue, 20 Jun 2006 16:02:38 +0200
Message-Id: <[EMAIL PROTECTED]>
[ 28411]
Subject: [PATCH] Re: [PATCH] Re: [perl #39530] printf: bad formatting
of hexadecimal conversion of binary string using vector flag
From: Dominic Dunlop <[EMAIL PROTECTED]>
Date: Tue, 20 Jun 2006 21:49:07 +0200
Message-Id: <[EMAIL PROTECTED]>
Affected files ...
... //depot/maint-5.8/perl/sv.c#323 integrate
... //depot/maint-5.8/perl/t/op/sprintf.t#17 integrate
Differences ...
==== //depot/maint-5.8/perl/sv.c#323 (text) ====
Index: perl/sv.c
--- perl/sv.c#322~29997~ 2007-01-26 02:30:23.000000000 -0800
+++ perl/sv.c 2007-01-26 03:36:22.000000000 -0800
@@ -8422,18 +8422,19 @@
integer:
{
char *ptr = ebuf + sizeof ebuf;
+ bool tempalt = uv ? alt : FALSE; /* Vectors can't change alt */
+ zeros = 0;
+
switch (base) {
unsigned dig;
case 16:
- if (!uv)
- alt = FALSE;
p = (char*)((c == 'X')
? "0123456789ABCDEF" : "0123456789abcdef");
do {
dig = uv & 15;
*--ptr = p[dig];
} while (uv >>= 4);
- if (alt) {
+ if (tempalt) {
esignbuf[esignlen++] = '0';
esignbuf[esignlen++] = c; /* 'x' or 'X' */
}
@@ -8447,13 +8448,11 @@
*--ptr = '0';
break;
case 2:
- if (!uv)
- alt = FALSE;
do {
dig = uv & 1;
*--ptr = '0' + dig;
} while (uv >>= 1);
- if (alt) {
+ if (tempalt) {
esignbuf[esignlen++] = '0';
esignbuf[esignlen++] = 'b';
}
==== //depot/maint-5.8/perl/t/op/sprintf.t#17 (xtext) ====
Index: perl/t/op/sprintf.t
--- perl/t/op/sprintf.t#16~29864~ 2007-01-17 15:29:13.000000000 -0800
+++ perl/t/op/sprintf.t 2007-01-26 03:36:22.000000000 -0800
@@ -422,6 +422,36 @@
>%v_< >''< >%v_ INVALID<
>%v#x< >''< >%v#x INVALID<
>%v02x< >"foo\012"< >66.6f.6f.0a<
+>%#v.8b< >"\141\000\142"< >0b01100001.00000000.0b01100010<
>perl #39530<
+>%#v.4o< >"\141\000\142"< >0141.0000.0142< >perl #39530<
+>%#v.3i< >"\141\000\142"< >097.000.098< >perl #39530<
+>%#v.2x< >"\141\000\142"< >0x61.00.0x62< >perl #39530<
+>%#v.2X< >"\141\000\142"< >0X61.00.0X62< >perl #39530<
+>%#v.8b< >"\141\017\142"< >0b01100001.0b00001111.0b01100010<
>perl #39530<
+>%#v.4o< >"\141\017\142"< >0141.0017.0142< >perl #39530<
+>%#v.3i< >"\141\017\142"< >097.015.098< >perl #39530<
+>%#v.2x< >"\141\017\142"< >0x61.0x0f.0x62< >perl #39530<
+>%#v.2X< >"\141\017\142"< >0X61.0X0F.0X62< >perl #39530<
+>%#*v.8b< >["][", "\141\000\142"]<
>0b01100001][00000000][0b01100010< >perl #39530<
+>%#*v.4o< >["][", "\141\000\142"]< >0141][0000][0142< >perl
#39530<
+>%#*v.3i< >["][", "\141\000\142"]< >097][000][098< >perl #39530<
+>%#*v.2x< >["][", "\141\000\142"]< >0x61][00][0x62< >perl
#39530<
+>%#*v.2X< >["][", "\141\000\142"]< >0X61][00][0X62< >perl
#39530<
+>%#*v.8b< >["][", "\141\017\142"]<
>0b01100001][0b00001111][0b01100010< >perl #39530<
+>%#*v.4o< >["][", "\141\017\142"]< >0141][0017][0142< >perl
#39530<
+>%#*v.3i< >["][", "\141\017\142"]< >097][015][098< >perl #39530<
+>%#*v.2x< >["][", "\141\017\142"]< >0x61][0x0f][0x62< >perl
#39530<
+>%#*v.2X< >["][", "\141\017\142"]< >0X61][0X0F][0X62< >perl
#39530<
+>%#v.8b< >"\141\x{1e01}\000\142\x{1e03}"<
>0b01100001.0b1111000000001.00000000.0b01100010.0b1111000000011< >perl
#39530<
+>%#v.4o< >"\141\x{1e01}\000\142\x{1e03}"<
>0141.017001.0000.0142.017003< >perl #39530<
+>%#v.3i< >"\141\x{1e01}\000\142\x{1e03}"< >097.7681.000.098.7683<
>perl #39530<
+>%#v.2x< >"\141\x{1e01}\000\142\x{1e03}"<
>0x61.0x1e01.00.0x62.0x1e03< >perl #39530<
+>%#v.2X< >"\141\x{1e01}\000\142\x{1e03}"<
>0X61.0X1E01.00.0X62.0X1E03< >perl #39530<
+>%#v.8b< >"\141\x{1e01}\017\142\x{1e03}"<
>0b01100001.0b1111000000001.0b00001111.0b01100010.0b1111000000011< >perl
#39530<
+>%#v.4o< >"\141\x{1e01}\017\142\x{1e03}"<
>0141.017001.0017.0142.017003< >perl #39530<
+>%#v.3i< >"\141\x{1e01}\017\142\x{1e03}"< >097.7681.015.098.7683<
>perl #39530<
+>%#v.2x< >"\141\x{1e01}\017\142\x{1e03}"<
>0x61.0x1e01.0x0f.0x62.0x1e03< >perl #39530<
+>%#v.2X< >"\141\x{1e01}\017\142\x{1e03}"<
>0X61.0X1E01.0X0F.0X62.0X1E03< >perl #39530<
>%V-%s< >["Hello"]< >%V-Hello INVALID<
>%K %d %d< >[13, 29]< >%K 13 29 INVALID<
>%*.*K %d< >[13, 29, 76]< >%*.*K 13 INVALID<
End of Patch.