summaryrefslogtreecommitdiff
path: root/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c')
-rw-r--r--ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c b/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c
index 4caf9e3afd..78643754cd 100644
--- a/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c
+++ b/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c
@@ -36,6 +36,8 @@ static const char rcsid[] = "#(@) $Id$";
#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 @@ xml_element* XMLRPC_to_xml_element_worker(XMLRPC_VALUE current_vector, XMLRPC_VA
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);