diff options
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r-- | ext/soap/php_encoding.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index 993a2fa4fc..9c25067f42 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -1065,15 +1065,9 @@ static xmlNodePtr to_xml_long(encodeTypePtr type, zval *data, int style, xmlNode snprintf(s, sizeof(s), "%0.0F",floor(Z_DVAL_P(data))); xmlNodeSetContent(ret, BAD_CAST(s)); } else { - zval tmp; - - ZVAL_DUP(&tmp, data); - if (Z_TYPE(tmp) != IS_LONG) { - convert_to_long(&tmp); - } - convert_to_string(&tmp); - xmlNodeSetContentLen(ret, BAD_CAST(Z_STRVAL(tmp)), Z_STRLEN(tmp)); - zval_dtor(&tmp); + zend_string *str = zend_long_to_str(zval_get_long(data)); + xmlNodeSetContentLen(ret, BAD_CAST(str->val), str->len); + zend_string_release(str); } if (style == SOAP_ENCODED) { |