summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2000-02-14 20:31:01 +0000
committerAndi Gutmans <andi@php.net>2000-02-14 20:31:01 +0000
commit7fa17e8e08ca4543a88e9b2467e56eb34c30341c (patch)
tree43df1f1b5a2611fff21b5dadbe979977393b0231 /Zend/zend_execute.c
parent95c77887471af4aaa8ecba445b7e69c0e46941e0 (diff)
downloadphp-git-7fa17e8e08ca4543a88e9b2467e56eb34c30341c.tar.gz
- Put in the infrastructure for the unset() fix. Right now it has the old
behavior but I just need time tomorrow to add the correct behavior.
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index e737d43ae2..e4d69c721e 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1246,6 +1246,10 @@ binary_assign_op_addr: {
AI_USE_PTR(Ts[opline->result.u.var].var);
}
NEXT_OPCODE();
+ case ZEND_FETCH_UNSET:
+ zend_fetch_var_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_R ELS_CC);
+ AI_USE_PTR(Ts[opline->result.u.var].var);
+ NEXT_OPCODE();
case ZEND_FETCH_IS:
zend_fetch_var_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_IS ELS_CC);
AI_USE_PTR(Ts[opline->result.u.var].var);
@@ -1277,6 +1281,13 @@ binary_assign_op_addr: {
AI_USE_PTR(Ts[opline->result.u.var].var);
}
NEXT_OPCODE();
+ case ZEND_FETCH_DIM_UNSET:
+ if (opline->extended_value == ZEND_FETCH_ADD_LOCK) {
+ PZVAL_LOCK(*Ts[opline->op1.u.var].var.ptr_ptr);
+ }
+ zend_fetch_dimension_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_R ELS_CC);
+ AI_USE_PTR(Ts[opline->result.u.var].var);
+ NEXT_OPCODE();
case ZEND_FETCH_OBJ_R:
zend_fetch_property_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_R ELS_CC);
AI_USE_PTR(Ts[opline->result.u.var].var);
@@ -1300,6 +1311,10 @@ binary_assign_op_addr: {
AI_USE_PTR(Ts[opline->result.u.var].var);
}
NEXT_OPCODE();
+ case ZEND_FETCH_OBJ_UNSET:
+ zend_fetch_property_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_R ELS_CC);
+ AI_USE_PTR(Ts[opline->result.u.var].var);
+ NEXT_OPCODE();
case ZEND_FETCH_DIM_TMP_VAR:
zend_fetch_dimension_address_from_tmp_var(&opline->result, &opline->op1, &opline->op2, Ts ELS_CC);
AI_USE_PTR(Ts[opline->result.u.var].var);