Fixed segfault in ext/standard/tests/strings/addslashes_variation1.php

This commit is contained in:
Xinchen Hui 2014-02-21 16:56:23 +08:00
parent 8211026fa7
commit e193944b3e
4 changed files with 89 additions and 45 deletions

View File

@ -62,6 +62,7 @@ ZEND_API zval* zend_call_method(zval *object, zend_class_entry *obj_ce, zend_fun
* needed later inside zend_call_function. */
fci.function_table = !object ? EG(function_table) : NULL;
result = zend_call_function(&fci, NULL TSRMLS_CC);
zval_ptr_dtor(&fci.function_name);
} else {
zend_fcall_info_cache fcic;
@ -97,6 +98,7 @@ ZEND_API zval* zend_call_method(zval *object, zend_class_entry *obj_ce, zend_fun
}
fcic.object_ptr = object;
result = zend_call_function(&fci, &fcic TSRMLS_CC);
zval_ptr_dtor(&fci.function_name);
}
if (result == FAILURE) {
/* error at c-level */

View File

@ -1526,9 +1526,9 @@ ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int ty
if (EXPECTED(Z_TYPE(retval) == IS_STRING)) {
//??? INIT_PZVAL(writeobj);
if (readobj == writeobj) {
zval_dtor(readobj);
zval_ptr_dtor(readobj);
}
ZVAL_ZVAL(writeobj, &retval, 1, 1);
ZVAL_COPY_VALUE(writeobj, &retval);
if (Z_TYPE_P(writeobj) != type) {
convert_to_explicit_type(writeobj, type);
}
@ -1537,7 +1537,7 @@ ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int ty
zval_ptr_dtor(&retval);
//??? INIT_PZVAL(writeobj);
if (readobj == writeobj) {
zval_dtor(readobj);
zval_ptr_dtor(readobj);
}
ZVAL_EMPTY_STRING(writeobj);
zend_error(E_RECOVERABLE_ERROR, "Method %s::__toString() must return a string value", ce->name->val);

View File

@ -3620,7 +3620,9 @@ ZEND_VM_HANDLER(72, ZEND_ADD_ARRAY_ELEMENT, CONST|TMP|VAR|CV, CONST|TMP|VAR|UNUS
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=GET_OP1_ZVAL_PTR(BP_VAR_R);
if (IS_OP1_TMP_FREE()) { /* temporary variable */
@ -3634,7 +3636,7 @@ ZEND_VM_HANDLER(72, ZEND_ADD_ARRAY_ELEMENT, CONST|TMP|VAR|CV, CONST|TMP|VAR|UNUS
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
FREE_OP1_IF_VAR();
} else if (OP1_TYPE == IS_CV) {
} else if (OP1_TYPE == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}

View File

@ -3910,7 +3910,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_O
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=opline->op1.zv;
if (0) { /* temporary variable */
@ -3924,7 +3926,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_O
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_CONST == IS_CV) {
} else if (IS_CONST == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -4747,7 +4749,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_HANDLER(ZEND_OPC
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=opline->op1.zv;
if (0) { /* temporary variable */
@ -4761,7 +4765,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_HANDLER(ZEND_OPC
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_CONST == IS_CV) {
} else if (IS_CONST == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -5544,7 +5548,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_VAR_HANDLER(ZEND_OPC
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=opline->op1.zv;
if (0) { /* temporary variable */
@ -5558,7 +5564,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_VAR_HANDLER(ZEND_OPC
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_CONST == IS_CV) {
} else if (IS_CONST == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -6193,7 +6199,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=opline->op1.zv;
if (0) { /* temporary variable */
@ -6207,7 +6215,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_CONST == IS_CV) {
} else if (IS_CONST == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -7073,7 +7081,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCO
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=opline->op1.zv;
if (0) { /* temporary variable */
@ -7087,7 +7097,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCO
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_CONST == IS_CV) {
} else if (IS_CONST == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -8836,7 +8846,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPC
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (1) { /* temporary variable */
@ -8850,7 +8862,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPC
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_TMP_VAR == IS_CV) {
} else if (IS_TMP_VAR == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -9648,7 +9660,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_HANDLER(ZEND_OPCOD
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (1) { /* temporary variable */
@ -9662,7 +9676,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_HANDLER(ZEND_OPCOD
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_TMP_VAR == IS_CV) {
} else if (IS_TMP_VAR == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -10453,7 +10467,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_VAR_HANDLER(ZEND_OPCOD
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (1) { /* temporary variable */
@ -10467,7 +10483,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_VAR_HANDLER(ZEND_OPCOD
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_TMP_VAR == IS_CV) {
} else if (IS_TMP_VAR == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -10991,7 +11007,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OP
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (1) { /* temporary variable */
@ -11005,7 +11023,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OP
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_TMP_VAR == IS_CV) {
} else if (IS_TMP_VAR == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -11800,7 +11818,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (1) { /* temporary variable */
@ -11814,7 +11834,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_TMP_VAR == IS_CV) {
} else if (IS_TMP_VAR == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -15053,7 +15073,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPC
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (0) { /* temporary variable */
@ -15067,7 +15089,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPC
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
zval_ptr_dtor_nogc(free_op1.var);
} else if (IS_VAR == IS_CV) {
} else if (IS_VAR == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -17181,7 +17203,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMP_HANDLER(ZEND_OPCOD
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (0) { /* temporary variable */
@ -17195,7 +17219,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMP_HANDLER(ZEND_OPCOD
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
zval_ptr_dtor_nogc(free_op1.var);
} else if (IS_VAR == IS_CV) {
} else if (IS_VAR == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -19356,7 +19380,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_VAR_HANDLER(ZEND_OPCOD
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (0) { /* temporary variable */
@ -19370,7 +19396,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_VAR_HANDLER(ZEND_OPCOD
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
zval_ptr_dtor_nogc(free_op1.var);
} else if (IS_VAR == IS_CV) {
} else if (IS_VAR == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -20692,7 +20718,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OP
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (0) { /* temporary variable */
@ -20706,7 +20734,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OP
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
zval_ptr_dtor_nogc(free_op1.var);
} else if (IS_VAR == IS_CV) {
} else if (IS_VAR == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -22606,7 +22634,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (0) { /* temporary variable */
@ -22620,7 +22650,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
zval_ptr_dtor_nogc(free_op1.var);
} else if (IS_VAR == IS_CV) {
} else if (IS_VAR == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -31338,7 +31368,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCO
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
if (0) { /* temporary variable */
@ -31352,7 +31384,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCO
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_CV == IS_CV) {
} else if (IS_CV == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -33340,7 +33372,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_HANDLER(ZEND_OPCODE
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
if (0) { /* temporary variable */
@ -33354,7 +33388,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_HANDLER(ZEND_OPCODE
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_CV == IS_CV) {
} else if (IS_CV == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -35389,7 +35423,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_VAR_HANDLER(ZEND_OPCODE
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
if (0) { /* temporary variable */
@ -35403,7 +35439,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_VAR_HANDLER(ZEND_OPCODE
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_CV == IS_CV) {
} else if (IS_CV == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -36606,7 +36642,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPC
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
if (0) { /* temporary variable */
@ -36620,7 +36658,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPC
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_CV == IS_CV) {
} else if (IS_CV == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}
@ -38381,7 +38419,9 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_
zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets");
}
SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr);
Z_ADDREF_P(expr_ptr);
if (Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
} else {
expr_ptr=_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
if (0) { /* temporary variable */
@ -38395,7 +38435,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_
ZVAL_DUP(&new_expr, expr_ptr);
expr_ptr = &new_expr;
} else if (IS_CV == IS_CV) {
} else if (IS_CV == IS_CV && Z_COUNTED_P(expr_ptr)) {
Z_ADDREF_P(expr_ptr);
}
}