tony2001 Wed Feb 21 14:24:44 2007 UTC Added files: /php-src/ext/xmlrpc/tests bug40576.phpt
Modified files: /php-src/ext/xmlrpc/libxmlrpc xml_to_xmlrpc.c Log: fix bug #40576 (double values are truncated to 6 decimal digits when encoding) http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c?r1=1.5&r2=1.6&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.6 --- 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:24:44 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.6 2007/02/21 14:24:44 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