mirror of
https://github.com/php/php-src.git
synced 2024-09-22 10:27:25 +00:00
Unset CV before calling zval_ptr_dtor(), because its destructor may bailout and stay CV value in inconsistet state
This commit is contained in:
parent
c99b767537
commit
abbb1c0f00
@ -4007,8 +4007,9 @@ ZEND_VM_HANDLER(74, ZEND_UNSET_VAR, CONST|TMP|VAR|CV, UNUSED|CONST|VAR)
|
||||
if (OP1_TYPE == IS_CV &&
|
||||
OP2_TYPE == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
|
@ -4021,8 +4021,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HA
|
||||
if (IS_CONST == IS_CV &&
|
||||
IS_CONST == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -5657,8 +5658,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HAND
|
||||
if (IS_CONST == IS_CV &&
|
||||
IS_VAR == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -6296,8 +6298,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_H
|
||||
if (IS_CONST == IS_CV &&
|
||||
IS_UNUSED == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -8952,8 +8955,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HAND
|
||||
if (IS_TMP_VAR == IS_CV &&
|
||||
IS_CONST == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -10552,8 +10556,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLE
|
||||
if (IS_TMP_VAR == IS_CV &&
|
||||
IS_VAR == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -11077,8 +11082,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HAN
|
||||
if (IS_TMP_VAR == IS_CV &&
|
||||
IS_UNUSED == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -15271,8 +15277,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAND
|
||||
if (IS_VAR == IS_CV &&
|
||||
IS_CONST == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -19695,8 +19702,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLE
|
||||
if (IS_VAR == IS_CV &&
|
||||
IS_VAR == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -21117,8 +21125,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HAN
|
||||
if (IS_VAR == IS_CV &&
|
||||
IS_UNUSED == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -32434,8 +32443,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDL
|
||||
if (IS_CV == IS_CV &&
|
||||
IS_CONST == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -36615,8 +36625,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER
|
||||
if (IS_CV == IS_CV &&
|
||||
IS_VAR == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
@ -37919,8 +37930,9 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HAND
|
||||
if (IS_CV == IS_CV &&
|
||||
IS_UNUSED == IS_UNUSED &&
|
||||
(opline->extended_value & ZEND_QUICK_SET)) {
|
||||
zval_ptr_dtor(EX_VAR(opline->op1.var));
|
||||
ZVAL_COPY_VALUE(&tmp, EX_VAR(opline->op1.var));
|
||||
ZVAL_UNDEF(EX_VAR(opline->op1.var));
|
||||
zval_ptr_dtor(&tmp);
|
||||
CHECK_EXCEPTION();
|
||||
ZEND_VM_NEXT_OPCODE();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user