]> granicus.if.org Git - php/commitdiff
Ok, so we do have to lock in there
authorAndi Gutmans <andi@php.net>
Sat, 10 Jul 1999 18:46:20 +0000 (18:46 +0000)
committerAndi Gutmans <andi@php.net>
Sat, 10 Jul 1999 18:46:20 +0000 (18:46 +0000)
Zend/zend_execute.c
Zend/zend_hash.c

index b7cc55b01baaffabc8b9e41a988429793e39d724..5c5218dde35c59877cab19fa37e44f078bd147ad 100644 (file)
@@ -245,7 +245,7 @@ static inline void zend_assign_to_variable(znode *result, znode *op1, znode *op2
                                break;
                }
                Ts[result->u.var].var = &EG(uninitialized_zval_ptr);
-               /* Had INC_AI_COUNT:  No need to lock anything */
+               SELECTIVE_PZVAL_LOCK(*Ts[result->u.var].var, result);
                return;
        }
 
@@ -254,7 +254,7 @@ static inline void zend_assign_to_variable(znode *result, znode *op1, znode *op2
        if (variable_ptr == EG(error_zval_ptr)) {
                if (result) {
                        Ts[result->u.var].var = &EG(uninitialized_zval_ptr);
-                       /* Had INC_AI_COUNT:  No need to lock anything */
+                       SELECTIVE_PZVAL_LOCK(*Ts[result->u.var].var, result);
                }
                return;
        }
@@ -554,8 +554,8 @@ static inline void zend_fetch_dimension_address(znode *result, znode *op1, znode
        container = *container_ptr;
 
        if (container == EG(error_zval_ptr)) {
-               /* Had INC_AI_COUNT:  No need to lock anything */
                *retval = &EG(error_zval_ptr);
+               SELECTIVE_PZVAL_LOCK(**retval, result);
                return;
        }
 
@@ -634,10 +634,10 @@ static inline void zend_fetch_dimension_address(znode *result, znode *op1, znode
                                        *retval = &EG(error_zval_ptr);
                                }
                                FREE_OP(op2, free_op2);
+                               SELECTIVE_PZVAL_LOCK(**retval, result);
                        }
                        break;
        }
-       /* Had INC_AI_COUNT - Relevant cases handled above */
 }
 
 
@@ -647,8 +647,8 @@ static inline void zend_fetch_dimension_address_from_tmp_var(znode *result, znod
        zval *container = get_zval_ptr(op1, Ts, &free_op1, BP_VAR_R);
 
        if (container->type != IS_ARRAY) {
-               /* Had INC_AI_COUNT:  No need to lock anything */
                Ts[result->u.var].var = &EG(uninitialized_zval_ptr);
+               SELECTIVE_PZVAL_LOCK(*Ts[result->u.var].var, result);
                return;
        }
 
@@ -700,8 +700,8 @@ static inline void zend_fetch_property_address(znode *result, znode *op1, znode
 
        container = *container_ptr;
        if (container == EG(error_zval_ptr)) {
-               /* Had INC_AI_COUNT:  No need to lock anything */
                *retval = &EG(error_zval_ptr);
+               SELECTIVE_PZVAL_LOCK(**retval, result);
                return;
        }
 
@@ -750,12 +750,13 @@ static inline void zend_fetch_property_address(znode *result, znode *op1, znode
 
                offset = get_zval_ptr(op2, Ts, &free_op2, BP_VAR_R);
                FREE_OP(op2, free_op2);
-               /* Had INC_AI_COUNT:  No need to lock anything */
                if (type==BP_VAR_R || type==BP_VAR_IS) {
                        *retval = &EG(uninitialized_zval_ptr);
+                       SELECTIVE_PZVAL_LOCK(**retval, result);
                        return;
                } else {
                        *retval = &EG(error_zval_ptr);
+                       SELECTIVE_PZVAL_LOCK(**retval, result);
                        return;
                }
        }
@@ -978,7 +979,7 @@ binary_assign_op_addr: {
                                        }
                                        if (*var_ptr == EG(error_zval_ptr)) {
                                                Ts[opline->result.u.var].var = &EG(uninitialized_zval_ptr);
-                                               /* Had INC_AI_COUNT:  No need to lock anything */
+                                               SELECTIVE_PZVAL_LOCK(*Ts[opline->result.u.var].var, &opline->result);
                                                opline++;
                                                continue;
                                        }
@@ -1015,7 +1016,7 @@ binary_assign_op_addr: {
                                        }
                                        if (*var_ptr == EG(error_zval_ptr)) {
                                                Ts[opline->result.u.var].var = &EG(uninitialized_zval_ptr);
-                                               /* Had INC_AI_COUNT:  No need to lock anything */
+                                               SELECTIVE_PZVAL_LOCK(*Ts[opline->result.u.var].var, &opline->result);
                                                opline++;
                                                continue;
                                        }
@@ -1114,7 +1115,6 @@ binary_assign_op_addr: {
                                break;
                        case ZEND_ASSIGN_REF:
                                zend_assign_to_variable_reference(&opline->result, get_zval_ptr_ptr(&opline->op1, Ts, BP_VAR_W), get_zval_ptr_ptr(&opline->op2, Ts, BP_VAR_W), Ts ELS_CC);
-                               /* Had INC_AI_COUNT:  Handled inside zend_assign_to_variable_reference() now */
                                break;
                        case ZEND_JMP:
 #if DEBUG_ZEND>=2
index 9e8f102be10e46b3866aa0b8b05148392b80b25b..292cc007b46fb81309de943fbe70d25dfc035780 100644 (file)
@@ -740,6 +740,9 @@ ZEND_API void zend_hash_destroy(HashTable *ht)
                }
                if (delete_bucket) {
                        pefree(q,ht->persistent);
+               } else {
+                       int i;
+                       i=2;
                }
        }
        pefree(ht->arBuckets,ht->persistent);