summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-07-10 10:55:55 +0000
committerZeev Suraski <zeev@php.net>1999-07-10 10:55:55 +0000
commit82563bde6021a7571bf184fdc91c5f591b611c37 (patch)
treec54916fcf04697cc752fdbc99cc754c469df8ea7
parent03d33b2f886def67d2d103b6925c499588f71c4c (diff)
downloadphp-git-82563bde6021a7571bf184fdc91c5f591b611c37.tar.gz
Final tweaks
-rw-r--r--Zend/zend_execute.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 1de0f784bd..bab7fe5766 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -398,6 +398,7 @@ static inline void zend_fetch_var_address(znode *result, znode *op1, znode *op2,
break;
case ZEND_FETCH_GLOBAL:
if (op1->op_type == IS_VAR) {
+ PZVAL_LOCK(varname);
EG(AiCount)++;
}
target_symbol_table = &EG(symbol_table);
@@ -1101,6 +1102,7 @@ binary_assign_op_addr: {
break;
case ZEND_FETCH_DIM_R:
if (opline->extended_value == ZEND_FETCH_NO_AI_COUNT) {
+ PZVAL_LOCK(*Ts[opline->op1.u.var].var);
EG(AiCount)++;
}
zend_fetch_dimension_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_R ELS_CC);
@@ -1289,7 +1291,9 @@ binary_assign_op_addr: {
if (opline->extended_value & ZEND_CTOR_CALL) {
/* constructor call */
EG(AiCount)++; /* for op1 */
+ PZVAL_LOCK(*Ts[opline->op1.u.var].var);
if (opline->op2.op_type==IS_VAR) {
+ PZVAL_LOCK(*Ts[opline->op2.u.var].var);
EG(AiCount)++;
}
}
@@ -1613,6 +1617,7 @@ send_by_ref:
break;
case ZEND_CASE:
if (opline->op1.op_type == IS_VAR) {
+ PZVAL_LOCK(*Ts[opline->op1.u.var].var);
EG(AiCount)++;
}
is_equal_function(&Ts[opline->result.u.var].tmp_var,
@@ -1871,6 +1876,7 @@ send_by_ref:
zval *object;
EG(AiCount)++;
+ PZVAL_LOCK(*Ts[opline->op1.u.var].var);
object = get_zval_ptr(&opline->op1, Ts, &free_op1, BP_VAR_R);
if (!object->value.obj.ce->handle_function_call
&& !zend_hash_exists(&object->value.obj.ce->function_table, object->value.obj.ce->name, object->value.obj.ce->name_length+1)) {