Hey all, This patch addresses the *printf() bug when dealing with exponents (%e). See http://bugs.php.net/bug.php?id=46145 for more details.
The patch is large because there were a lot of unit tests written to expect the wrong behavior, so I had to update them. I realize that there is the possibility that we might decide to label this as a "won't fix", but I figured I might as well put forth the effort :) Ilia
### Eclipse Workspace Patch 1.0 #P php53 Index: ext/standard/tests/strings/vsprintf_basic6.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/vsprintf_basic6.phpt,v retrieving revision 1.1.4.2 diff -u -r1.1.4.2 vsprintf_basic6.phpt --- ext/standard/tests/strings/vsprintf_basic6.phpt 5 Oct 2007 18:09:31 -0000 1.1.4.2 +++ ext/standard/tests/strings/vsprintf_basic6.phpt 25 Sep 2008 04:41:54 -0000 @@ -26,7 +26,7 @@ ?> --EXPECTF-- *** Testing vsprintf() : basic functionality - using exponential format *** -string(11) "1.000000e+3" -string(23) "1.000000e+3 2.000000e+3" -string(35) "1.000000e+3 2.000000e+3 3.000000e+3" +string(12) "1.000000e+03" +string(25) "1.000000e+03 2.000000e+03" +string(38) "1.000000e+03 2.000000e+03 3.000000e+03" Done Index: ext/standard/tests/strings/sprintf_variation53.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/sprintf_variation53.phpt,v retrieving revision 1.2.2.2 diff -u -r1.2.2.2 sprintf_variation53.phpt --- ext/standard/tests/strings/sprintf_variation53.phpt 29 Sep 2007 16:54:57 -0000 1.2.2.2 +++ ext/standard/tests/strings/sprintf_variation53.phpt 25 Sep 2008 04:41:54 -0000 @@ -49,9 +49,9 @@ string(1) "Ò" string(1) "Ò" string(1) "Ò" -string(11) "1.234000e+3" -string(11) "1.234000e+3" -string(11) "1.234000e+3" +string(12) "1.234000e+03" +string(12) "1.234000e+03" +string(12) "1.234000e+03" string(4) "1234" string(4) "1234" string(4) "1234" @@ -64,7 +64,7 @@ string(3) "4D2" string(3) "4D2" string(3) "4D2" -string(11) "1.234000E+3" -string(11) "1.234000E+3" -string(11) "1.234000E+3" +string(12) "1.234000E+03" +string(12) "1.234000E+03" +string(12) "1.234000E+03" Done \ No newline at end of file Index: ext/standard/tests/strings/sprintf_f_2.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/sprintf_f_2.phpt,v retrieving revision 1.1.2.6 diff -u -r1.1.2.6 sprintf_f_2.phpt --- ext/standard/tests/strings/sprintf_f_2.phpt 4 Jun 2007 01:23:07 -0000 1.1.2.6 +++ ext/standard/tests/strings/sprintf_f_2.phpt 25 Sep 2008 04:41:54 -0000 @@ -80,37 +80,37 @@ var_dump(sprintf("%.3e", $number)); // outputs 3.63e+8 ?> ---EXPECTREGEX-- -string\(7\) \"100\.426\" -string\(6\) \"100\.43\" -string\(3\) \"100\" -string\(3\) \"100\" -string\(3\) \"144\" -string\(3\) \"144\" -string\(34\) \"There are 100 monkeys in the world\" -string\(28\) \"The 100\.1 contains 0 monkeys\" -string\(30\) \"The world contains 100 monkeys\" -string\(76\) \"The world contains 100 monkeys. - That's a nice world full of 100 monkeys\.\" -string\(33\) \"%b = '10100111101010011010101101'\" -string\(8\) \"%c = 'A'\" -string\(15\) \"%d = '43951789'\" -string\(18\) \"%e = '4\.395179e\+7'\" -string\(15\) \"%u = '43951789'\" -(string\(17\) \"%u = '4251015507'\"|string\(27\) \"%u = '18446744073665599827'\") -string\(22\) \"%f = '43951789\.000000'\" -string\(16\) \"%o = '247523255'\" -string\(15\) \"%s = '43951789'\" -string\(14\) \"%x = '29ea6ad'\" -string\(14\) \"%X = '29EA6AD'\" -string\(17\) \"%\+d = '\+43951789'\" -string\(17\) \"%\+d = '-43951789'\" -string\(8\) \"\[monkey\]\" -string\(12\) \"\[ monkey\]\" -string\(12\) \"\[monkey \]\" -string\(12\) \"\[0000monkey\]\" -string\(12\) \"\[####monkey\]\" -string\(12\) \"\[many monke\]\" -string\(10\) \"2006-12-18\" -string\(6\) \"123\.10\" -string\(8\) \"3\.625e\+8\" +--EXPECT-- +string(7) "100.426" +string(6) "100.43" +string(3) "100" +string(3) "100" +string(3) "144" +string(3) "144" +string(34) "There are 100 monkeys in the world" +string(28) "The 100.1 contains 0 monkeys" +string(30) "The world contains 100 monkeys" +string(76) "The world contains 100 monkeys. + That's a nice world full of 100 monkeys." +string(33) "%b = '10100111101010011010101101'" +string(8) "%c = 'A'" +string(15) "%d = '43951789'" +string(19) "%e = '4.395179e+07'" +string(15) "%u = '43951789'" +string(17) "%u = '4251015507'" +string(22) "%f = '43951789.000000'" +string(16) "%o = '247523255'" +string(15) "%s = '43951789'" +string(14) "%x = '29ea6ad'" +string(14) "%X = '29EA6AD'" +string(17) "%+d = '+43951789'" +string(17) "%+d = '-43951789'" +string(8) "[monkey]" +string(12) "[ monkey]" +string(12) "[monkey ]" +string(12) "[0000monkey]" +string(12) "[####monkey]" +string(12) "[many monke]" +string(10) "2006-12-18" +string(6) "123.10" +string(9) "3.625e+08" Index: ext/standard/tests/strings/printf.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/printf.phpt,v retrieving revision 1.1.2.3.2.2 diff -u -r1.1.2.3.2.2 printf.phpt --- ext/standard/tests/strings/printf.phpt 15 Sep 2008 11:47:16 -0000 1.1.2.3.2.2 +++ ext/standard/tests/strings/printf.phpt 25 Sep 2008 04:41:53 -0000 @@ -510,9 +510,9 @@ -1.000000e+0 2.700000e+0 -2.700000e+0 -2.333333e+7 --2.333333e+7 -1.234000e+3 +2.333333e+07 +-2.333333e+07 +1.234000e+03 *** Output for unsigned integer type *** Index: ext/standard/tests/strings/printf_64bit.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/printf_64bit.phpt,v retrieving revision 1.1.2.4.2.2 diff -u -r1.1.2.4.2.2 printf_64bit.phpt --- ext/standard/tests/strings/printf_64bit.phpt 16 Sep 2008 13:41:34 -0000 1.1.2.4.2.2 +++ ext/standard/tests/strings/printf_64bit.phpt 25 Sep 2008 04:41:54 -0000 @@ -510,9 +510,9 @@ -1.000000e+0 2.700000e+0 -2.700000e+0 -2.333333e+7 --2.333333e+7 -1.234000e+3 +2.333333e+07 +-2.333333e+07 +1.234000e+03 *** Output for unsigned integer type *** Index: ext/standard/tests/strings/vfprintf_basic.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/vfprintf_basic.phpt,v retrieving revision 1.1.2.1 diff -u -r1.1.2.1 vfprintf_basic.phpt --- ext/standard/tests/strings/vfprintf_basic.phpt 20 Jun 2008 04:21:58 -0000 1.1.2.1 +++ ext/standard/tests/strings/vfprintf_basic.phpt 25 Sep 2008 04:41:54 -0000 @@ -62,8 +62,8 @@ int(3) string(5) "A B C" int(5) -string(35) "1.000000e+3 2.000000E+4 2.000000e+2" -int(35) +string(38) "1.000000e+03 2.000000E+04 2.000000e+02" +int(38) string(2) "50" int(2) string(35) "Testing 1001 6 2.550200 foobar f 41" Index: ext/standard/tests/strings/sprintf_variation47.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/sprintf_variation47.phpt,v retrieving revision 1.2.2.2 diff -u -r1.2.2.2 sprintf_variation47.phpt --- ext/standard/tests/strings/sprintf_variation47.phpt 29 Sep 2007 16:54:57 -0000 1.2.2.2 +++ ext/standard/tests/strings/sprintf_variation47.phpt 25 Sep 2008 04:41:54 -0000 @@ -57,47 +57,47 @@ *** Testing sprintf() : scientific formats with float values *** -- Iteration 1 -- -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(13) " -2.147484e+9" -string(13) "-2.147484e+9 " -string(13) " -2.147484e+9" -string(13) " --2.147484e+9" -string(12) "-2.147484e+9" -string(30) " -2.147484e+9" +string(14) " -2.147484e+09" +string(14) "-2.147484e+09 " +string(14) " -2.147484e+09" +string(14) " +-2.147484e+09" +string(13) "-2.147484e+09" +string(30) " -2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 2 -- -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(12) " 2.147484e+9" -string(12) "2.147484e+9 " -string(12) " 2.147484e+9" -string(12) " -2.147484e+9" -string(11) "2.147484e+9" -string(30) " 2.147484e+9" +string(13) " 2.147484e+09" +string(13) "2.147484e+09 " +string(13) " 2.147484e+09" +string(13) " +2.147484e+09" +string(12) "2.147484e+09" +string(30) " 2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 3 -- -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(13) " -2.147484e+9" -string(13) "-2.147484e+9 " -string(13) " -2.147484e+9" -string(13) " --2.147484e+9" -string(12) "-2.147484e+9" -string(30) " -2.147484e+9" +string(14) " -2.147484e+09" +string(14) "-2.147484e+09 " +string(14) " -2.147484e+09" +string(14) " +-2.147484e+09" +string(13) "-2.147484e+09" +string(30) " -2.147484e+09" string(4) "0-1]" string(1) "e" @@ -117,32 +117,32 @@ string(1) "e" -- Iteration 5 -- -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(12) " 2.147484e+9" -string(12) "2.147484e+9 " -string(12) " 2.147484e+9" -string(12) " -2.147484e+9" -string(11) "2.147484e+9" -string(30) " 2.147484e+9" +string(13) " 2.147484e+09" +string(13) "2.147484e+09 " +string(13) " 2.147484e+09" +string(13) " +2.147484e+09" +string(12) "2.147484e+09" +string(30) " 2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 6 -- -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(13) " -2.147484e+9" -string(13) "-2.147484e+9 " -string(13) " -2.147484e+9" -string(13) " --2.147484e+9" -string(12) "-2.147484e+9" -string(30) " -2.147484e+9" +string(14) " -2.147484e+09" +string(14) "-2.147484e+09 " +string(14) " -2.147484e+09" +string(14) " +-2.147484e+09" +string(13) "-2.147484e+09" +string(30) " -2.147484e+09" string(4) "0-1]" string(1) "e" @@ -162,17 +162,17 @@ string(1) "e" -- Iteration 8 -- -string(12) "-1.000000e-1" +string(13) "-1.000000e-01" string(1) "e" -string(12) "-1.000000e-1" +string(13) "-1.000000e-01" string(1) "e" -string(13) " -1.000000e-1" -string(13) "-1.000000e-1 " -string(13) " -1.000000e-1" -string(13) " --1.000000e-1" -string(12) "-1.000000e-1" -string(30) " -1.000000e-1" +string(14) " -1.000000e-01" +string(14) "-1.000000e-01 " +string(14) " -1.000000e-01" +string(14) " +-1.000000e-01" +string(13) "-1.000000e-01" +string(30) " -1.000000e-01" string(4) "0-1]" string(1) "e" @@ -192,152 +192,152 @@ string(1) "e" -- Iteration 10 -- -string(11) "1.000000e+5" +string(12) "1.000000e+05" string(1) "e" -string(11) "1.000000e+5" +string(12) "1.000000e+05" string(1) "e" -string(12) " 1.000000e+5" -string(12) "1.000000e+5 " -string(12) " 1.000000e+5" -string(12) " -1.000000e+5" -string(11) "1.000000e+5" -string(30) " 1.000000e+5" +string(13) " 1.000000e+05" +string(13) "1.000000e+05 " +string(13) " 1.000000e+05" +string(13) " +1.000000e+05" +string(12) "1.000000e+05" +string(30) " 1.000000e+05" string(4) "0-1]" string(1) "e" -- Iteration 11 -- -string(12) "-1.000000e+5" +string(13) "-1.000000e+05" string(1) "e" -string(12) "-1.000000e+5" +string(13) "-1.000000e+05" string(1) "e" -string(13) " -1.000000e+5" -string(13) "-1.000000e+5 " -string(13) " -1.000000e+5" -string(13) " --1.000000e+5" -string(12) "-1.000000e+5" -string(30) " -1.000000e+5" +string(14) " -1.000000e+05" +string(14) "-1.000000e+05 " +string(14) " -1.000000e+05" +string(14) " +-1.000000e+05" +string(13) "-1.000000e+05" +string(30) " -1.000000e+05" string(4) "0-1]" string(1) "e" -- Iteration 12 -- -string(12) "-1.000000e+5" +string(13) "-1.000000e+05" string(1) "e" -string(12) "-1.000000e+5" +string(13) "-1.000000e+05" string(1) "e" -string(13) " -1.000000e+5" -string(13) "-1.000000e+5 " -string(13) " -1.000000e+5" -string(13) " --1.000000e+5" -string(12) "-1.000000e+5" -string(30) " -1.000000e+5" +string(14) " -1.000000e+05" +string(14) "-1.000000e+05 " +string(14) " -1.000000e+05" +string(14) " +-1.000000e+05" +string(13) "-1.000000e+05" +string(30) " -1.000000e+05" string(4) "0-1]" string(1) "e" -- Iteration 13 -- -string(11) "1.000000e+5" +string(12) "1.000000e+05" string(1) "e" -string(11) "1.000000e+5" +string(12) "1.000000e+05" string(1) "e" -string(12) " 1.000000e+5" -string(12) "1.000000e+5 " -string(12) " 1.000000e+5" -string(12) " -1.000000e+5" -string(11) "1.000000e+5" -string(30) " 1.000000e+5" +string(13) " 1.000000e+05" +string(13) "1.000000e+05 " +string(13) " 1.000000e+05" +string(13) " +1.000000e+05" +string(12) "1.000000e+05" +string(30) " 1.000000e+05" string(4) "0-1]" string(1) "e" -- Iteration 14 -- -string(11) "1.000000e+5" +string(12) "1.000000e+05" string(1) "e" -string(11) "1.000000e+5" +string(12) "1.000000e+05" string(1) "e" -string(12) " 1.000000e+5" -string(12) "1.000000e+5 " -string(12) " 1.000000e+5" -string(12) " -1.000000e+5" -string(11) "1.000000e+5" -string(30) " 1.000000e+5" +string(13) " 1.000000e+05" +string(13) "1.000000e+05 " +string(13) " 1.000000e+05" +string(13) " +1.000000e+05" +string(12) "1.000000e+05" +string(30) " 1.000000e+05" string(4) "0-1]" string(1) "e" -- Iteration 15 -- -string(12) "-1.000000e-5" +string(13) "-1.000000e-05" string(1) "e" -string(12) "-1.000000e-5" +string(13) "-1.000000e-05" string(1) "e" -string(13) " -1.000000e-5" -string(13) "-1.000000e-5 " -string(13) " -1.000000e-5" -string(13) " --1.000000e-5" -string(12) "-1.000000e-5" -string(30) " -1.000000e-5" +string(14) " -1.000000e-05" +string(14) "-1.000000e-05 " +string(14) " -1.000000e-05" +string(14) " +-1.000000e-05" +string(13) "-1.000000e-05" +string(30) " -1.000000e-05" string(4) "0-1]" string(1) "e" -- Iteration 16 -- -string(11) "1.000000e+8" +string(12) "1.000000e+08" string(1) "e" -string(11) "1.000000e+8" +string(12) "1.000000e+08" string(1) "e" -string(12) " 1.000000e+8" -string(12) "1.000000e+8 " -string(12) " 1.000000e+8" -string(12) " -1.000000e+8" -string(11) "1.000000e+8" -string(30) " 1.000000e+8" +string(13) " 1.000000e+08" +string(13) "1.000000e+08 " +string(13) " 1.000000e+08" +string(13) " +1.000000e+08" +string(12) "1.000000e+08" +string(30) " 1.000000e+08" string(4) "0-1]" string(1) "e" -- Iteration 17 -- -string(12) "-1.000000e+9" +string(13) "-1.000000e+09" string(1) "e" -string(12) "-1.000000e+9" +string(13) "-1.000000e+09" string(1) "e" -string(13) " -1.000000e+9" -string(13) "-1.000000e+9 " -string(13) " -1.000000e+9" -string(13) " --1.000000e+9" -string(12) "-1.000000e+9" -string(30) " -1.000000e+9" +string(14) " -1.000000e+09" +string(14) "-1.000000e+09 " +string(14) " -1.000000e+09" +string(14) " +-1.000000e+09" +string(13) "-1.000000e+09" +string(30) " -1.000000e+09" string(4) "0-1]" string(1) "e" -- Iteration 18 -- -string(11) "1.000000e+1" +string(12) "1.000000e+01" string(1) "e" -string(11) "1.000000e+1" +string(12) "1.000000e+01" string(1) "e" -string(12) " 1.000000e+1" -string(12) "1.000000e+1 " -string(12) " 1.000000e+1" -string(12) " -1.000000e+1" -string(11) "1.000000e+1" -string(30) " 1.000000e+1" +string(13) " 1.000000e+01" +string(13) "1.000000e+01 " +string(13) " 1.000000e+01" +string(13) " +1.000000e+01" +string(12) "1.000000e+01" +string(30) " 1.000000e+01" string(4) "0-1]" string(1) "e" -- Iteration 19 -- -string(11) "1.050000e+6" +string(12) "1.050000e+06" string(1) "e" -string(11) "1.050000e+6" +string(12) "1.050000e+06" string(1) "e" -string(12) " 1.050000e+6" -string(12) "1.050000e+6 " -string(12) " 1.050000e+6" -string(12) " -1.050000e+6" -string(11) "1.050000e+6" -string(30) " 1.050000e+6" +string(13) " 1.050000e+06" +string(13) "1.050000e+06 " +string(13) " 1.050000e+06" +string(13) " +1.050000e+06" +string(12) "1.050000e+06" +string(30) " 1.050000e+06" string(4) "0-1]" string(1) "e" Done \ No newline at end of file Index: ext/standard/tests/strings/vsprintf_variation19.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/vsprintf_variation19.phpt,v retrieving revision 1.1.4.3 diff -u -r1.1.4.3 vsprintf_variation19.phpt --- ext/standard/tests/strings/vsprintf_variation19.phpt 6 Nov 2007 12:54:28 -0000 1.1.4.3 +++ ext/standard/tests/strings/vsprintf_variation19.phpt 25 Sep 2008 04:41:54 -0000 @@ -72,7 +72,7 @@ string(7) "A B C" -- Iteration 6 -- -string(38) "2.000000e+1 2.000000e-1 -2.000000e+1" +string(41) "2.000000e+01 2.000000e-01 -2.000000e+01" -- Iteration 7 -- string(18) "4294967285 22 33" @@ -87,5 +87,5 @@ string(16) "11 FFFFFFDE 33" -- Iteration 11 -- -string(38) "2.000000E+1 2.000000E-1 -2.000000E+1" +string(41) "2.000000E+01 2.000000E-01 -2.000000E+01" Done Index: ext/standard/tests/strings/sprintf_variation46.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/sprintf_variation46.phpt,v retrieving revision 1.2.2.2 diff -u -r1.2.2.2 sprintf_variation46.phpt --- ext/standard/tests/strings/sprintf_variation46.phpt 29 Sep 2007 16:54:57 -0000 1.2.2.2 +++ ext/standard/tests/strings/sprintf_variation46.phpt 25 Sep 2008 04:41:54 -0000 @@ -100,182 +100,182 @@ string(1) "e" -- Iteration 4 -- -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(13) " -2.147484e+9" -string(13) "-2.147484e+9 " -string(13) " -2.147484e+9" -string(13) " --2.147484e+9" -string(12) "-2.147484e+9" -string(30) " -2.147484e+9" +string(14) " -2.147484e+09" +string(14) "-2.147484e+09 " +string(14) " -2.147484e+09" +string(14) " +-2.147484e+09" +string(13) "-2.147484e+09" +string(30) " -2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 5 -- -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(13) " -2.147484e+9" -string(13) "-2.147484e+9 " -string(13) " -2.147484e+9" -string(13) " --2.147484e+9" -string(12) "-2.147484e+9" -string(30) " -2.147484e+9" +string(14) " -2.147484e+09" +string(14) "-2.147484e+09 " +string(14) " -2.147484e+09" +string(14) " +-2.147484e+09" +string(13) "-2.147484e+09" +string(30) " -2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 6 -- -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(12) " 2.147484e+9" -string(12) "2.147484e+9 " -string(12) " 2.147484e+9" -string(12) " -2.147484e+9" -string(11) "2.147484e+9" -string(30) " 2.147484e+9" +string(13) " 2.147484e+09" +string(13) "2.147484e+09 " +string(13) " 2.147484e+09" +string(13) " +2.147484e+09" +string(12) "2.147484e+09" +string(30) " 2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 7 -- -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(12) " 2.147484e+9" -string(12) "2.147484e+9 " -string(12) " 2.147484e+9" -string(12) " -2.147484e+9" -string(11) "2.147484e+9" -string(30) " 2.147484e+9" +string(13) " 2.147484e+09" +string(13) "2.147484e+09 " +string(13) " 2.147484e+09" +string(13) " +2.147484e+09" +string(12) "2.147484e+09" +string(30) " 2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 8 -- -string(11) "4.667000e+3" +string(12) "4.667000e+03" string(1) "e" -string(11) "4.667000e+3" +string(12) "4.667000e+03" string(1) "e" -string(12) " 4.667000e+3" -string(12) "4.667000e+3 " -string(12) " 4.667000e+3" -string(12) " -4.667000e+3" -string(11) "4.667000e+3" -string(30) " 4.667000e+3" +string(13) " 4.667000e+03" +string(13) "4.667000e+03 " +string(13) " 4.667000e+03" +string(13) " +4.667000e+03" +string(12) "4.667000e+03" +string(30) " 4.667000e+03" string(4) "0-1]" string(1) "e" -- Iteration 9 -- -string(11) "4.779000e+3" +string(12) "4.779000e+03" string(1) "e" -string(11) "4.779000e+3" +string(12) "4.779000e+03" string(1) "e" -string(12) " 4.779000e+3" -string(12) "4.779000e+3 " -string(12) " 4.779000e+3" -string(12) " -4.779000e+3" -string(11) "4.779000e+3" -string(30) " 4.779000e+3" +string(13) " 4.779000e+03" +string(13) "4.779000e+03 " +string(13) " 4.779000e+03" +string(13) " +4.779000e+03" +string(12) "4.779000e+03" +string(30) " 4.779000e+03" string(4) "0-1]" string(1) "e" -- Iteration 10 -- -string(11) "4.095000e+3" +string(12) "4.095000e+03" string(1) "e" -string(11) "4.095000e+3" +string(12) "4.095000e+03" string(1) "e" -string(12) " 4.095000e+3" -string(12) "4.095000e+3 " -string(12) " 4.095000e+3" -string(12) " -4.095000e+3" -string(11) "4.095000e+3" -string(30) " 4.095000e+3" +string(13) " 4.095000e+03" +string(13) "4.095000e+03 " +string(13) " 4.095000e+03" +string(13) " +4.095000e+03" +string(12) "4.095000e+03" +string(30) " 4.095000e+03" string(4) "0-1]" string(1) "e" -- Iteration 11 -- -string(11) "2.500000e+2" +string(12) "2.500000e+02" string(1) "e" -string(11) "2.500000e+2" +string(12) "2.500000e+02" string(1) "e" -string(12) " 2.500000e+2" -string(12) "2.500000e+2 " -string(12) " 2.500000e+2" -string(12) " -2.500000e+2" -string(11) "2.500000e+2" -string(30) " 2.500000e+2" +string(13) " 2.500000e+02" +string(13) "2.500000e+02 " +string(13) " 2.500000e+02" +string(13) " +2.500000e+02" +string(12) "2.500000e+02" +string(30) " 2.500000e+02" string(4) "0-1]" string(1) "e" -- Iteration 12 -- -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(13) " -2.147484e+9" -string(13) "-2.147484e+9 " -string(13) " -2.147484e+9" -string(13) " --2.147484e+9" -string(12) "-2.147484e+9" -string(30) " -2.147484e+9" +string(14) " -2.147484e+09" +string(14) "-2.147484e+09 " +string(14) " -2.147484e+09" +string(14) " +-2.147484e+09" +string(13) "-2.147484e+09" +string(30) " -2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 13 -- -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(12) " 2.147484e+9" -string(12) "2.147484e+9 " -string(12) " 2.147484e+9" -string(12) " -2.147484e+9" -string(11) "2.147484e+9" -string(30) " 2.147484e+9" +string(13) " 2.147484e+09" +string(13) "2.147484e+09 " +string(13) " 2.147484e+09" +string(13) " +2.147484e+09" +string(12) "2.147484e+09" +string(30) " 2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 14 -- -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(12) " 2.147484e+9" -string(12) "2.147484e+9 " -string(12) " 2.147484e+9" -string(12) " -2.147484e+9" -string(11) "2.147484e+9" -string(30) " 2.147484e+9" +string(13) " 2.147484e+09" +string(13) "2.147484e+09 " +string(13) " 2.147484e+09" +string(13) " +2.147484e+09" +string(12) "2.147484e+09" +string(30) " 2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 15 -- -string(11) "8.300000e+1" +string(12) "8.300000e+01" string(1) "e" -string(11) "8.300000e+1" +string(12) "8.300000e+01" string(1) "e" -string(12) " 8.300000e+1" -string(12) "8.300000e+1 " -string(12) " 8.300000e+1" -string(12) " -8.300000e+1" -string(11) "8.300000e+1" -string(30) " 8.300000e+1" +string(13) " 8.300000e+01" +string(13) "8.300000e+01 " +string(13) " 8.300000e+01" +string(13) " +8.300000e+01" +string(12) "8.300000e+01" +string(30) " 8.300000e+01" string(4) "0-1]" string(1) "e" @@ -295,32 +295,32 @@ string(1) "e" -- Iteration 17 -- -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(12) "-2.147484e+9" +string(13) "-2.147484e+09" string(1) "e" -string(13) " -2.147484e+9" -string(13) "-2.147484e+9 " -string(13) " -2.147484e+9" -string(13) " --2.147484e+9" -string(12) "-2.147484e+9" -string(30) " -2.147484e+9" +string(14) " -2.147484e+09" +string(14) "-2.147484e+09 " +string(14) " -2.147484e+09" +string(14) " +-2.147484e+09" +string(13) "-2.147484e+09" +string(30) " -2.147484e+09" string(4) "0-1]" string(1) "e" -- Iteration 18 -- -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(11) "2.147484e+9" +string(12) "2.147484e+09" string(1) "e" -string(12) " 2.147484e+9" -string(12) "2.147484e+9 " -string(12) " 2.147484e+9" -string(12) " -2.147484e+9" -string(11) "2.147484e+9" -string(30) " 2.147484e+9" +string(13) " 2.147484e+09" +string(13) "2.147484e+09 " +string(13) " 2.147484e+09" +string(13) " +2.147484e+09" +string(12) "2.147484e+09" +string(30) " 2.147484e+09" string(4) "0-1]" string(1) "e" Done \ No newline at end of file Index: ext/standard/tests/strings/vsprintf_variation17.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/vsprintf_variation17.phpt,v retrieving revision 1.1.4.2 diff -u -r1.1.4.2 vsprintf_variation17.phpt --- ext/standard/tests/strings/vsprintf_variation17.phpt 5 Oct 2007 18:09:31 -0000 1.1.4.2 +++ ext/standard/tests/strings/vsprintf_variation17.phpt 25 Sep 2008 04:41:54 -0000 @@ -48,17 +48,17 @@ *** Testing vsprintf() : scientific formats and scientific values *** -- Iteration 1 -- -string(36) "0.000000e+0 +1.000000e+0 1.000000e+3" +string(37) "0.000000e+0 +1.000000e+0 1.000000e+03" -- Iteration 2 -- -string(38) "2.200000e+2 e 1.000000e+1 1.000000e+10" +string(40) "2.200000e+02 e 1.000000e+01 1.000000e+10" -- Iteration 3 -- -string(32) "-2.2000e+13 1.0000e+21 1.2000e+2" +string(33) "-2.2000e+13 1.0000e+21 1.2000e+02" -- Iteration 4 -- -string(74) "#########1.000000e+1 1.000000e+2 $$$$$$$$-1.000000e+3 _________1.000000e+2" +string(75) "########1.000000e+01 1.000000e+02 $$$$$$$-1.000000e+03 ________1.000000e+02" -- Iteration 5 -- -string(47) "1.000000e+3 2.000000e+3 3.000000e+3 4.000000e+3" +string(51) "1.000000e+03 2.000000e+03 3.000000e+03 4.000000e+03" Done Index: ext/standard/tests/strings/vsprintf_variation18.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/vsprintf_variation18.phpt,v retrieving revision 1.1.4.2 diff -u -r1.1.4.2 vsprintf_variation18.phpt --- ext/standard/tests/strings/vsprintf_variation18.phpt 5 Oct 2007 18:09:31 -0000 1.1.4.2 +++ ext/standard/tests/strings/vsprintf_variation18.phpt 25 Sep 2008 04:41:54 -0000 @@ -67,22 +67,22 @@ echo "Done"; ?> ---EXPECTF-- +--EXPECT-- *** Testing vsprintf() : scientific formats and non-scientific values *** -- Iteration 1 -- -string(232) "2.200000e+0 +2.000000e-1 1.020000e+1 - 1.234562e+5 e -1.234679e+3 1.234679e+3 - 2.0000e+1 2.1220e+2 -4.110000e+11 2.2120e+3 - 1.234578e+4 1.200000e+1 -1.200000e+1 -1.234562e+5 - 1.020000e+1 1.234562e+5 2.200000e+0 2.000000e-1" +string(245) "2.200000e+0 +2.000000e-01 1.020000e+01 + 1.234562e+05 e -1.234679e+03 1.234679e+03 + 2.0000e+01 2.1220e+02 -4.110000e+11 2.2120e+03 + 1.234578e+04 1.200000e+01 -1.200000e+01 -1.234562e+05 + 1.020000e+01 1.234562e+05 2.200000e+0 2.000000e-01" -- Iteration 2 -- -string(228) "0.000000e+0 +0.000000e+0 0.000000e+0 - 1.230000e+2 e -1.230000e+2 1.230000e+2 - 0.0000e+0 0.0000e+0 1.234560e+5 0.0000e+0 - 1.234000e+3 0.000000e+0 0.000000e+0 0.000000e+0 - 0.000000e+0 1.230000e+2 0.000000e+0 0.000000e+0" +string(234) "0.000000e+0 +0.000000e+0 0.000000e+0 + 1.230000e+02 e -1.230000e+02 1.230000e+02 + 0.0000e+0 0.0000e+0 1.234560e+05 0.0000e+0 + 1.234000e+03 0.000000e+0 0.000000e+0 0.000000e+0 + 0.000000e+0 1.230000e+02 0.000000e+0 0.000000e+0" -- Iteration 3 -- string(227) "1.000000e+0 +1.000000e+0 1.000000e+0 Index: ext/standard/tests/strings/sprintf_basic6.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/sprintf_basic6.phpt,v retrieving revision 1.2.2.2 diff -u -r1.2.2.2 sprintf_basic6.phpt --- ext/standard/tests/strings/sprintf_basic6.phpt 29 Sep 2007 16:54:57 -0000 1.2.2.2 +++ ext/standard/tests/strings/sprintf_basic6.phpt 25 Sep 2008 04:41:54 -0000 @@ -35,7 +35,7 @@ --EXPECTF-- *** Testing sprintf() : basic functionality - using exponential format *** string(6) "format" -string(11) "1.000000e+3" -string(23) "1.000000E+3 2.000000e+3" -string(35) "1.000000e+3 2.000000E+3 3.000000e+3" +string(12) "1.000000e+03" +string(25) "1.000000E+03 2.000000e+03" +string(38) "1.000000e+03 2.000000E+03 3.000000e+03" Done Index: ext/standard/tests/strings/fprintf_variation_005.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/strings/fprintf_variation_005.phpt,v retrieving revision 1.1.2.3 diff -u -r1.1.2.3 fprintf_variation_005.phpt --- ext/standard/tests/strings/fprintf_variation_005.phpt 19 Jul 2007 15:15:26 -0000 1.1.2.3 +++ ext/standard/tests/strings/fprintf_variation_005.phpt 25 Sep 2008 04:41:53 -0000 @@ -40,7 +40,7 @@ -1.000000e+0 2.700000e+0 -2.700000e+0 -2.333333e+7 --2.333333e+7 -1.234000e+3 +2.333333e+07 +-2.333333e+07 +1.234000e+03 Done Index: main/snprintf.c =================================================================== RCS file: /repository/php-src/main/snprintf.c,v retrieving revision 1.37.2.4.2.14.2.5 diff -u -r1.37.2.4.2.14.2.5 snprintf.c --- main/snprintf.c 15 Sep 2008 11:47:16 -0000 1.37.2.4.2.14.2.5 +++ main/snprintf.c 25 Sep 2008 04:41:54 -0000 @@ -450,6 +450,9 @@ /* * Make sure the exponent has at least 2 digits */ + if (t_len <= 1) { + *s++ = '0'; + } while (t_len--) { *s++ = *p++; } @@ -635,7 +638,6 @@ free_zcopy = 0; fmt++; - /* * Try to avoid checking for flags, width or precision */ Index: ext/standard/tests/general_functions/001.phpt =================================================================== RCS file: /repository/php-src/ext/standard/tests/general_functions/001.phpt,v retrieving revision 1.4.6.1 diff -u -r1.4.6.1 001.phpt --- ext/standard/tests/general_functions/001.phpt 25 Dec 2006 14:27:51 -0000 1.4.6.1 +++ ext/standard/tests/general_functions/001.phpt 25 Sep 2008 04:41:53 -0000 @@ -63,5 +63,5 @@ 99.00 1.234000e-18 1.234000e+18 -9.843243e+6 --9.843243e+6 +9.843243e+06 +-9.843243e+06
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php