]> granicus.if.org Git - php/commitdiff
Avoid in-place modification
authorDmitry Stogov <dmitry@zend.com>
Fri, 30 May 2014 07:12:03 +0000 (11:12 +0400)
committerDmitry Stogov <dmitry@zend.com>
Fri, 30 May 2014 07:12:03 +0000 (11:12 +0400)
ext/simplexml/simplexml.c

index f9f7452bf4893fe275dcb514b3385bc06fbe3d7c..1bcfec361a555fa6cf6acfb066f4cd6b4f7f4c65 100644 (file)
@@ -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;