diff options
Diffstat (limited to 'Zend/zend_execute.c')
| -rw-r--r-- | Zend/zend_execute.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 848fab4c17..2ef172c8cb 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1950,11 +1950,13 @@ int zend_fetch_dim_unset_handler(ZEND_OPCODE_HANDLER_ARGS)  	}  	*/  	zend_fetch_dimension_address(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts), BP_VAR_R TSRMLS_CC); -	PZVAL_UNLOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr); -	if (EX_T(EX(opline)->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) { -		SEPARATE_ZVAL_IF_NOT_REF(EX_T(EX(opline)->result.u.var).var.ptr_ptr); +	if (EX_T(EX(opline)->result.u.var).var.ptr_ptr != NULL) { +		PZVAL_UNLOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr); +		if (EX_T(EX(opline)->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) { +			SEPARATE_ZVAL_IF_NOT_REF(EX_T(EX(opline)->result.u.var).var.ptr_ptr); +		} +		PZVAL_LOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr);  	} -	PZVAL_LOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr);  	NEXT_OPCODE();  } | 
