diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2014-03-05 13:55:56 +0400 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2014-03-05 13:55:56 +0400 |
| commit | 37337373287544f39d696c2fb357a56e99e6cecc (patch) | |
| tree | de36b9e92ed66ada6c24179a3bd68695f603f00f /Zend/zend_execute.c | |
| parent | dc889b69ef8947a87a93a59a24013d972b313158 (diff) | |
| download | php-git-37337373287544f39d696c2fb357a56e99e6cecc.tar.gz | |
Handle interned strings as non-refcounted scalars
Diffstat (limited to 'Zend/zend_execute.c')
| -rw-r--r-- | Zend/zend_execute.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 955249acb4..4c17201385 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -955,7 +955,7 @@ static inline zval* zend_assign_to_variable(zval *variable_ptr, zval *value TSRM { zval garbage; - if (EXPECTED(!IS_REFCOUNTED(Z_TYPE_P(variable_ptr)))) { + if (EXPECTED(!Z_REFCOUNTED_P(variable_ptr))) { if (EXPECTED(!Z_ISREF_P(value))) { ZVAL_COPY(variable_ptr, value); } else { @@ -966,7 +966,7 @@ static inline zval* zend_assign_to_variable(zval *variable_ptr, zval *value TSRM variable_ptr = Z_REFVAL_P(variable_ptr); } - if (EXPECTED(!IS_REFCOUNTED(Z_TYPE_P(variable_ptr)))) { + if (EXPECTED(!Z_REFCOUNTED_P(variable_ptr))) { if (EXPECTED(!Z_ISREF_P(value))) { ZVAL_COPY(variable_ptr, value); } else { @@ -977,7 +977,7 @@ static inline zval* zend_assign_to_variable(zval *variable_ptr, zval *value TSRM Z_OBJ_HANDLER_P(variable_ptr, set)(variable_ptr, value TSRMLS_CC); } else if (EXPECTED(variable_ptr != value)) { if (Z_REFCOUNT_P(variable_ptr)==1) { -//??? if (EXPECTED(!IS_REFCOUNTED(Z_TYPE_P(value)))) { +//??? if (EXPECTED(!Z_REFCOUNTED_P(value))) { //??? _zval_dtor_func(variable_ptr ZEND_FILE_LINE_CC); //??? ZVAL_COPY(variable_ptr, value); //??? } else if (EXPECTED(!Z_ISREF_P(value))) { @@ -1244,7 +1244,7 @@ convert_to_array: container = Z_INDIRECT_P(container); } ZVAL_STR_OFFSET(result, container, Z_LVAL_P(dim)); - Z_ADDREF_P(container); + if (!IS_INTERNED(Z_STR_P(container))) STR_ADDREF(Z_STR_P(container)); return; } break; |
