]> granicus.if.org Git - php/commitdiff
Final tweaks
authorZeev Suraski <zeev@php.net>
Sat, 10 Jul 1999 10:55:55 +0000 (10:55 +0000)
committerZeev Suraski <zeev@php.net>
Sat, 10 Jul 1999 10:55:55 +0000 (10:55 +0000)
Zend/zend_execute.c

index 1de0f784bdd2146bcc221f8638769e20afe9fc9e..bab7fe5766de7f81f123f54301da06dccad417d4 100644 (file)
@@ -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)) {