diff options
| -rw-r--r-- | ext/standard/browscap.c | 12 |
1 files changed, 11 insertions, 1 deletions
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)); + } + } } /* }}} */ |
