From: Dmitry Stogov Date: Fri, 19 Jan 2018 10:41:35 +0000 (+0300) Subject: Only persistent referencecounted strings should be duplicated. X-Git-Tag: php-7.3.0alpha1~573 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=41ef2952c866e34a51185d26b1e105016e9c5108;p=php Only persistent referencecounted strings should be duplicated. --- diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c index e58a20cd4d..60c012707d 100644 --- a/ext/standard/browscap.c +++ b/ext/standard/browscap.c @@ -688,7 +688,17 @@ static int browser_reg_compare( static void browscap_zval_copy_ctor(zval *p) /* {{{ */ { - zval_copy_ctor(p); + if (Z_REFCOUNTED_P(p)) { + zend_string *str; + + ZEND_ASSERT(Z_TYPE_P(p) == IS_STRING); + str = Z_STR_P(p); + if (!(GC_FLAGS(str) & GC_PERSISTENT)) { + GC_ADDREF(str); + } else { + ZVAL_NEW_STR(p, zend_string_init(ZSTR_VAL(str), ZSTR_LEN(str), 0)); + } + } } /* }}} */