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.

Reply via email to