summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2000-08-05 13:54:07 +0000
committerAndi Gutmans <andi@php.net>2000-08-05 13:54:07 +0000
commit50ddf9e3d51d633fce7b74a0941a2f2818bcbb3d (patch)
tree72ac828acde2bef413487837aaf8c708e9942987 /Zend
parentd140a799f7678cb6fbcfcbd71e99bb3055735776 (diff)
downloadphp-git-50ddf9e3d51d633fce7b74a0941a2f2818bcbb3d.tar.gz
- Use some more SEPARATE_ZVAL macros instead of replicated code.
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_execute.c30
1 files changed, 6 insertions, 24 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 00c254d52f..d1faef252c 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -642,13 +642,8 @@ static void zend_fetch_dimension_address(znode *result, znode *op1, znode *op2,
case BP_VAR_RW:
case BP_VAR_W:
if (!PZVAL_IS_REF(container)) {
- container->refcount--;
- if (container->refcount>0) {
- ALLOC_ZVAL(container);
- *container_ptr = container;
- container->is_ref=0;
- }
- container->refcount=1;
+ SEPARATE_ZVAL(container_ptr);
+ container = *container_ptr;
}
array_init(container);
break;
@@ -658,12 +653,8 @@ static void zend_fetch_dimension_address(znode *result, znode *op1, znode *op2,
switch (container->type) {
case IS_ARRAY:
if ((type==BP_VAR_W || type==BP_VAR_RW) && container->refcount>1 && !PZVAL_IS_REF(container)) {
- container->refcount--;
- ALLOC_ZVAL(*container_ptr);
- **container_ptr = *container;
+ SEPARATE_ZVAL(container_ptr);
container = *container_ptr;
- INIT_PZVAL(container);
- zendi_zval_copy_ctor(*container);
}
if (op2->op_type == IS_UNUSED) {
zval *new_zval = &EG(uninitialized_zval);
@@ -826,13 +817,8 @@ static void zend_fetch_property_address(znode *result, znode *op1, znode *op2, t
case BP_VAR_RW:
case BP_VAR_W:
if (!PZVAL_IS_REF(container)) {
- container->refcount--;
- if (container->refcount>0) {
- ALLOC_ZVAL(container);
- *container_ptr = container;
- container->is_ref=0;
- }
- container->refcount=1;
+ SEPARATE_ZVAL(container_ptr);
+ container = *container_ptr;
}
object_init(container);
break;
@@ -855,12 +841,8 @@ static void zend_fetch_property_address(znode *result, znode *op1, znode *op2, t
if ((type==BP_VAR_W || type==BP_VAR_RW) && container->refcount>1 && !PZVAL_IS_REF(container)) {
- container->refcount--;
- ALLOC_ZVAL(*container_ptr);
- **container_ptr = *container;
+ SEPARATE_ZVAL(container_ptr);
container = *container_ptr;
- INIT_PZVAL(container);
- zendi_zval_copy_ctor(*container);
}
*retval = zend_fetch_property_address_inner(container->value.obj.properties, op2, Ts, type ELS_CC);
SELECTIVE_PZVAL_LOCK(**retval, result);