diff options
| author | Andi Gutmans <andi@php.net> | 2000-01-26 05:03:22 +0000 |
|---|---|---|
| committer | Andi Gutmans <andi@php.net> | 2000-01-26 05:03:22 +0000 |
| commit | 4585f7bf1f8e5fb52aebd0990d67fa017ea8a918 (patch) | |
| tree | 6f54962014d4695fdd5910019ac7ec4dd0a8adb2 | |
| parent | 5c3917478a0cbdd4fd7468780e3c8175fd397707 (diff) | |
| download | php-git-4585f7bf1f8e5fb52aebd0990d67fa017ea8a918.tar.gz | |
- Allow is_ref to become 0 in case the refcount is back to 1.
| -rw-r--r-- | Zend/zend_execute_API.c | 4 | ||||
| -rw-r--r-- | Zend/zend_opcode.c | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 912310a555..11a24eec01 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -217,9 +217,11 @@ ZEND_API void _zval_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC) if ((*zval_ptr)->refcount==0) { zval_dtor(*zval_ptr); safe_free_zval_ptr(*zval_ptr); + } else if ((*zval_ptr)->refcount == 1) { + (*zval_ptr)->is_ref = 0; } } - + ZEND_API inline int i_zend_is_true(zval *op) { diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 4ca0b43eed..a80aa26bc7 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -313,9 +313,11 @@ void pass_include_eval(zend_op_array *op_array) while (opline<end) { if (opline->op1.op_type==IS_CONST) { opline->op1.u.constant.is_ref = 1; + opline->op1.u.constant.refcount = 2; /* Make sure is_ref won't be reset */ } if (opline->op2.op_type==IS_CONST) { opline->op2.u.constant.is_ref = 1; + opline->op2.u.constant.refcount = 2; } opline++; } |
