Ts[node->u.var].tmp_var = get_overloaded_property(ELS_C);
Ts[node->u.var].tmp_var.refcount=1;
Ts[node->u.var].tmp_var.EA.is_ref=1;
- Ts[node->u.var].tmp_var.EA.locks=0;
return &Ts[node->u.var].tmp_var;
break;
case IS_STRING_OFFSET: {
zval_ptr_dtor(&str);
T->tmp_var.refcount=1;
T->tmp_var.EA.is_ref=1;
- T->tmp_var.EA.locks=0;
T->tmp_var.type = IS_STRING;
return &T->tmp_var;
}
{
zval **variable_ptr_ptr = get_zval_ptr_ptr(op1, Ts, BP_VAR_W);
zval *variable_ptr;
- int previous_lock_count;
-
+
if (!variable_ptr_ptr) {
switch (Ts[op1->u.var].EA.type) {
case IS_OVERLOADED_OBJECT:
if (variable_ptr!=value) {
short refcount=variable_ptr->refcount;
- previous_lock_count = variable_ptr->EA.locks;
if (type!=IS_TMP_VAR) {
value->refcount++;
}
*variable_ptr = *value;
variable_ptr->refcount = refcount;
variable_ptr->EA.is_ref = 1;
- variable_ptr->EA.locks = previous_lock_count;
if (type!=IS_TMP_VAR) {
zendi_zval_copy_ctor(*variable_ptr);
zval_ptr_dtor(&value);
value = (zval *) emalloc(sizeof(zval));
*value = *orig_value;
value->refcount=0;
- value->EA.locks = 0;
zval_copy_ctor(value);
}
*/
} else if (PZVAL_IS_REF(value)) {
zval tmp = *value;
- previous_lock_count = variable_ptr->EA.locks;
tmp = *value;
zval_copy_ctor(&tmp);
tmp.refcount=1;
- tmp.EA.locks = previous_lock_count;
zendi_zval_dtor(*variable_ptr);
*variable_ptr = tmp;
} else {
case IS_TMP_VAR:
zendi_zval_dtor(*variable_ptr);
value->refcount=1;
- previous_lock_count = variable_ptr->EA.locks;
*variable_ptr = *value;
- variable_ptr->EA.locks = previous_lock_count;
break;
}
} else { /* we need to split */
value = (zval *) emalloc(sizeof(zval));
*value = *orig_value;
value->refcount=0;
- value->EA.locks = 0;
zval_copy_ctor(value);
}
*/
*variable_ptr = *value;
zval_copy_ctor(variable_ptr);
variable_ptr->refcount=1;
- variable_ptr->EA.locks = 0;
break;
}
*variable_ptr_ptr = value;
case IS_TMP_VAR:
(*variable_ptr_ptr) = (zval *) emalloc(sizeof(zval));
value->refcount=1;
- value->EA.locks = 0;
**variable_ptr_ptr = *value;
break;
}
if (container->refcount>0) {
container = *container_ptr = (zval *) emalloc(sizeof(zval));
container->EA.is_ref=0;
- container->EA.locks = 0;
}
container->refcount=1;
}
if (container->refcount>0) {
container = *container_ptr = (zval *) emalloc(sizeof(zval));
container->EA.is_ref=0;
- container->EA.locks = 0;
}
container->refcount=1;
}
globals->refcount=1;
globals->EA.is_ref=1;
- globals->EA.locks = 0;
globals->type = IS_ARRAY;
globals->value.ht = &EG(symbol_table);
if (zend_hash_add(EG(active_symbol_table), "GLOBALS", sizeof("GLOBALS"), &globals, sizeof(zval *), NULL)==FAILURE) {
/* Fall through */
binary_assign_op_addr: {
zval **var_ptr = get_zval_ptr_ptr(&opline->op1, Ts, BP_VAR_RW);
- int previous_lock_count;
if (!var_ptr) {
zend_error(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
**var_ptr = *orig_var;
zendi_zval_copy_ctor(**var_ptr);
(*var_ptr)->refcount=1;
- (*var_ptr)->EA.locks = 0;
}
}
- previous_lock_count = (*var_ptr)->EA.locks;
EG(binary_op)(*var_ptr, *var_ptr, get_zval_ptr(&opline->op2, Ts, &EG(free_op2), BP_VAR_R));
- (*var_ptr)->EA.locks = previous_lock_count;
Ts[opline->result.u.var].var.ptr_ptr = var_ptr;
SELECTIVE_PZVAL_LOCK(*var_ptr, &opline->result);
FREE_OP(&opline->op2, EG(free_op2));
**var_ptr = *orig_var;
zendi_zval_copy_ctor(**var_ptr);
(*var_ptr)->refcount=1;
- (*var_ptr)->EA.locks = 0;
}
}
incdec_op(*var_ptr);
}
object.ptr->refcount = 1;
object.ptr->EA.is_ref = 1;
- object.ptr->EA.locks = 0;
}
*this_ptr = object.ptr;
object.ptr->refcount++;
var_uninit(varptr);
varptr->refcount=0;
varptr->EA.is_ref=0;
- varptr->EA.locks = 0;
} else if (PZVAL_IS_REF(varptr)) {
zval *original_var = varptr;
varptr = (zval *) emalloc(sizeof(zval));
*varptr = *original_var;
varptr->EA.is_ref = 0;
- varptr->EA.locks = 0;
varptr->refcount = 0;
zval_copy_ctor(varptr);
}
zval_copy_ctor(varptr);
}
varptr->EA.is_ref = 1;
- varptr->EA.locks = 0;
/* at the end of this code refcount is always 1 */
}
varptr->refcount++;
}
default_value->refcount=0;
default_value->EA.is_ref=0;
- default_value->EA.locks = 0;
param = &default_value;
assignment_value = default_value;
} else {
object_init_ex(&Ts[opline->result.u.var].tmp_var, ce);
Ts[opline->result.u.var].tmp_var.refcount=1;
Ts[opline->result.u.var].tmp_var.EA.is_ref=1;
- Ts[opline->result.u.var].tmp_var.EA.locks=0;
-
zval_dtor(&class_name);
FREE_OP(&opline->op1, EG(free_op1));
}
var_uninit(&EG(error_zval));
EG(uninitialized_zval).refcount = 1;
EG(uninitialized_zval).EA.is_ref=0;
- EG(uninitialized_zval).EA.locks = 0;
EG(uninitialized_zval_ptr)=&EG(uninitialized_zval);
EG(error_zval).refcount = 1;
EG(error_zval).EA.is_ref=0;
- EG(error_zval).EA.locks = 0;
EG(error_zval_ptr)=&EG(error_zval);
EG(destroying_function_symbol_table) = 0;
zend_ptr_stack_init(&EG(arg_types_stack));
ZEND_API int _zval_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC)
{
- int locked = (*zval_ptr)->EA.locks;
-
#if DEBUG_ZEND>=2
printf("Reducing refcount for %x (%x): %d->%d\n", *zval_ptr, zval_ptr, (*zval_ptr)->refcount, (*zval_ptr)->refcount-1);
#endif
zval_dtor(*zval_ptr);
safe_free_zval_ptr(*zval_ptr);
}
- if (locked) {
- ELS_FETCH();
-
- if (EG(destroying_function_symbol_table)) {
- return 1;
- } else {
- return 0; /* don't kill the container bucket */
- }
- } else {
- return 1;
- }
+ return 1;
}
*new_zval = **params[i];
zval_copy_ctor(new_zval);
new_zval->refcount = 1;
- new_zval->EA.locks = 0;
(*params[i])->refcount--;
*params[i] = new_zval;
}
}
value_ptr->refcount = 1;
value_ptr->EA.is_ref = 1;
- value_ptr->EA.locks = 0;
}
*variable_ptr_ptr = value_ptr;