Hello Antony, Wednesday, February 21, 2007, 3:24:44 PM, you wrote:
> 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)); You don't have to use ap_php_snprintf() here. The problem before seemed to be an issue with not including "main/snprintf.h" which might result in not using our implementation. > + 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 Best regards, Marcus -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php