]> granicus.if.org Git - php/commitdiff
Properly update string type flags
authorDmitry Stogov <dmitry@zend.com>
Tue, 12 Sep 2017 22:45:57 +0000 (01:45 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 12 Sep 2017 22:45:57 +0000 (01:45 +0300)
Zend/zend_variables.c

index d2d0b966b20e238b77e28b8d8a0aeb55f81c4a97..3a62b6d72a3d1abd85a397728bb30f99f9c6b1e4 100644 (file)
@@ -219,8 +219,10 @@ ZEND_API void ZEND_FASTCALL _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC)
 {
        if (EXPECTED(Z_TYPE_P(zvalue) == IS_ARRAY)) {
                ZVAL_ARR(zvalue, zend_array_dup(Z_ARRVAL_P(zvalue)));
-       } else if (EXPECTED(Z_TYPE_P(zvalue) == IS_STRING) ||
-                  EXPECTED(Z_TYPE_P(zvalue) == IS_CONSTANT)) {
+       } else if (EXPECTED(Z_TYPE_P(zvalue) == IS_STRING)) {
+               CHECK_ZVAL_STRING_REL(Z_STR_P(zvalue));
+               ZVAL_NEW_STR(zvalue, zend_string_dup(Z_STR_P(zvalue), 0));
+       } else if (EXPECTED(Z_TYPE_P(zvalue) == IS_CONSTANT)) {
                CHECK_ZVAL_STRING_REL(Z_STR_P(zvalue));
                Z_STR_P(zvalue) = zend_string_dup(Z_STR_P(zvalue), 0);
        } else if (EXPECTED(Z_TYPE_P(zvalue) == IS_CONSTANT_AST)) {