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

Reply via email to