tony2001                Wed Feb 21 14:25:27 2007 UTC

  Added files:                 (Branch: PHP_5_2)
    /php-src/ext/xmlrpc/tests   bug40576.phpt 

  Modified files:              
    /php-src    NEWS 
    /php-src/ext/xmlrpc/libxmlrpc       xml_to_xmlrpc.c 
  Log:
  MFH: fix #40576 (double values are truncated to 6 decimal digits when 
encoding)
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.554&r2=1.2027.2.547.2.555&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.554 php-src/NEWS:1.2027.2.547.2.555
--- php-src/NEWS:1.2027.2.547.2.554     Wed Feb 21 13:09:03 2007
+++ php-src/NEWS        Wed Feb 21 14:25:27 2007
@@ -9,6 +9,8 @@
 - Added --ri switch to CLI which allows to check extension information. 
(Marcus)
 - Added tidyNode::getParent() method (John, Nuno)
 - Fixed zend_llist_remove_tail (Michael Wallner, Dmitry)
+- Fixed bug #40576 (double values are truncated to 6 decimal digits when 
+  encoding). (Tony)
 - Fixed bug #40560 (DIR functions do not work on root UNC path). (Dmitry)
 - Fixed bug #40548 (SplFileInfo::getOwner/getGroup give a warning on broken
   symlink). (Marcus)
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c?r1=1.5&r2=1.5.6.1&diff_format=u
Index: php-src/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c
diff -u php-src/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c:1.5 
php-src/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c:1.5.6.1
--- php-src/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c:1.5    Tue Apr 27 17:33:59 2004
+++ php-src/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c        Wed Feb 21 14:25:27 2007
@@ -31,11 +31,13 @@
 */
 
 
-static const char rcsid[] = "#(@) $Id: xml_to_xmlrpc.c,v 1.5 2004/04/27 
17:33:59 iliaa Exp $";
+static const char rcsid[] = "#(@) $Id: xml_to_xmlrpc.c,v 1.5.6.1 2007/02/21 
14:25:27 tony2001 Exp $";
 
 #ifdef _WIN32
 #include "xmlrpc_win32.h"
 #endif
+#include "php.h"
+#include "main/snprintf.h"
 #include <string.h>
 #include <stdlib.h>
 #include "xml_to_xmlrpc.h"
@@ -225,9 +227,12 @@
             simplestring_add(&elem_val->text, buf);
             break;
          case xmlrpc_double:
-            elem_val->name = strdup(ELEM_DOUBLE);
-            snprintf(buf, BUF_SIZE, "%f", XMLRPC_GetValueDouble(node));
-            simplestring_add(&elem_val->text, buf);
+            {
+                TSRMLS_FETCH();
+                elem_val->name = strdup(ELEM_DOUBLE);
+                ap_php_snprintf(buf, BUF_SIZE, "%.*G", (int) EG(precision), 
XMLRPC_GetValueDouble(node));
+                simplestring_add(&elem_val->text, buf);
+            }
             break;
          case xmlrpc_datetime:
             elem_val->name = strdup(ELEM_DATETIME);

http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/bug40576.phpt?view=markup&rev=1.1
Index: php-src/ext/xmlrpc/tests/bug40576.phpt
+++ php-src/ext/xmlrpc/tests/bug40576.phpt
--TEST--
Bug #40576 (double values are truncated to 6 decimal digits when encoding)
--INI--
precision=12
--FILE--
<?php

var_dump(xmlrpc_encode(1.123456789));
var_dump(xmlrpc_encode(11234567891010));
var_dump(xmlrpc_encode(11234567));
var_dump(xmlrpc_encode(""));
var_dump(xmlrpc_encode("test"));
var_dump(xmlrpc_encode("1.22222222222222222222222"));

echo "Done\n";
?>
--EXPECTF--     
string(125) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <double>1.123456789</double>
 </value>
</param>
</params>
"
string(128) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <double>11234567891000</double>
 </value>
</param>
</params>
"
string(116) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <int>11234567</int>
 </value>
</param>
</params>
"
string(106) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string/>
 </value>
</param>
</params>
"
string(118) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string>test</string>
 </value>
</param>
</params>
"
string(139) "<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <string>1.22222222222222222222222</string>
 </value>
</param>
</params>
"
Done

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to