Skip to content

Commit f79688e

Browse files
author
Andi Gutmans
committed
- Fix bug #3309
1 parent acddf10 commit f79688e

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

Zend/zend_execute.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1248,7 +1248,9 @@ binary_assign_op_addr: {
12481248
NEXT_OPCODE();
12491249
case ZEND_FETCH_UNSET:
12501250
zend_fetch_var_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_R ELS_CC);
1251-
AI_USE_PTR(Ts[opline->result.u.var].var);
1251+
if (Ts[opline->result.u.var].var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
1252+
SEPARATE_ZVAL(Ts[opline->result.u.var].var.ptr_ptr);
1253+
}
12521254
NEXT_OPCODE();
12531255
case ZEND_FETCH_IS:
12541256
zend_fetch_var_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_IS ELS_CC);
@@ -1282,11 +1284,15 @@ binary_assign_op_addr: {
12821284
}
12831285
NEXT_OPCODE();
12841286
case ZEND_FETCH_DIM_UNSET:
1287+
/* Not needed in DIM_UNSET
12851288
if (opline->extended_value == ZEND_FETCH_ADD_LOCK) {
12861289
PZVAL_LOCK(*Ts[opline->op1.u.var].var.ptr_ptr);
12871290
}
1291+
*/
12881292
zend_fetch_dimension_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_R ELS_CC);
1289-
AI_USE_PTR(Ts[opline->result.u.var].var);
1293+
if (Ts[opline->result.u.var].var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
1294+
SEPARATE_ZVAL(Ts[opline->result.u.var].var.ptr_ptr);
1295+
}
12901296
NEXT_OPCODE();
12911297
case ZEND_FETCH_OBJ_R:
12921298
zend_fetch_property_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_R ELS_CC);
@@ -1313,7 +1319,9 @@ binary_assign_op_addr: {
13131319
NEXT_OPCODE();
13141320
case ZEND_FETCH_OBJ_UNSET:
13151321
zend_fetch_property_address(&opline->result, &opline->op1, &opline->op2, Ts, BP_VAR_R ELS_CC);
1316-
AI_USE_PTR(Ts[opline->result.u.var].var);
1322+
if (Ts[opline->result.u.var].var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
1323+
SEPARATE_ZVAL(Ts[opline->result.u.var].var.ptr_ptr);
1324+
}
13171325
NEXT_OPCODE();
13181326
case ZEND_FETCH_DIM_TMP_VAR:
13191327
zend_fetch_dimension_address_from_tmp_var(&opline->result, &opline->op1, &opline->op2, Ts ELS_CC);

0 commit comments

Comments
 (0)