zend_assign_to_variable_reference(variable_ptr, value_ptr TSRMLS_CC);
if (OP2_TYPE == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
- Z_DELREF_P(variable_ptr);
+//??? Z_DELREF_P(variable_ptr);
}
if (RETURN_VALUE_USED(opline)) {
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(varptr);
- Z_ADDREF_P(varptr);
+//??? don't increment refcount of overloaded element
+ if (OP1_TYPE != IS_VAR || EXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) == IS_INDIRECT)) {
+ Z_ADDREF_P(varptr);
+ }
zend_vm_stack_push(varptr TSRMLS_CC);
FREE_OP1_VAR_PTR();
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(varptr);
- Z_ADDREF_P(varptr);
+//??? don't increment refcount of overloaded element
+ if (IS_VAR != IS_VAR || EXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) == IS_INDIRECT)) {
+ Z_ADDREF_P(varptr);
+ }
zend_vm_stack_push(varptr TSRMLS_CC);
if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
zend_assign_to_variable_reference(variable_ptr, value_ptr TSRMLS_CC);
if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
- Z_DELREF_P(variable_ptr);
+//??? Z_DELREF_P(variable_ptr);
}
if (RETURN_VALUE_USED(opline)) {
zend_assign_to_variable_reference(variable_ptr, value_ptr TSRMLS_CC);
if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
- Z_DELREF_P(variable_ptr);
+//??? Z_DELREF_P(variable_ptr);
}
if (RETURN_VALUE_USED(opline)) {
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(varptr);
- Z_ADDREF_P(varptr);
+//??? don't increment refcount of overloaded element
+ if (IS_CV != IS_VAR || EXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) == IS_INDIRECT)) {
+ Z_ADDREF_P(varptr);
+ }
zend_vm_stack_push(varptr TSRMLS_CC);
CHECK_EXCEPTION();
zend_assign_to_variable_reference(variable_ptr, value_ptr TSRMLS_CC);
if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
- Z_DELREF_P(variable_ptr);
+//??? Z_DELREF_P(variable_ptr);
}
if (RETURN_VALUE_USED(opline)) {
zend_assign_to_variable_reference(variable_ptr, value_ptr TSRMLS_CC);
if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
- Z_DELREF_P(variable_ptr);
+//??? Z_DELREF_P(variable_ptr);
}
if (RETURN_VALUE_USED(opline)) {