summaryrefslogtreecommitdiff
path: root/ext/simplexml
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-05-30 11:12:03 +0400
committerDmitry Stogov <dmitry@zend.com>2014-05-30 11:12:03 +0400
commit45d7ab1a4c323c50bc5007cf826540e62693db8c (patch)
treed4942a0b54694df7c4fc267b99c3b2090156742a /ext/simplexml
parentb3b616cf7ee0702aca2f6fdb022dc7e28e015a22 (diff)
downloadphp-git-45d7ab1a4c323c50bc5007cf826540e62693db8c.tar.gz
Avoid in-place modification
Diffstat (limited to 'ext/simplexml')
-rw-r--r--ext/simplexml/simplexml.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index f9f7452bf4..1bcfec361a 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -530,7 +530,12 @@ static int sxe_prop_dim_write(zval *object, zval *member, zval *value, zend_bool
case IS_TRUE:
case IS_DOUBLE:
case IS_NULL:
- convert_to_string(value);
+ if (Z_TYPE_P(value) != IS_STRING) {
+ ZVAL_DUP(&zval_copy, value);
+ value = &zval_copy;
+ convert_to_string(value);
+ new_value = 1;
+ }
break;
case IS_STRING:
break;