diff options
Diffstat (limited to 'ext/opcache/Optimizer/block_pass.c')
| -rw-r--r-- | ext/opcache/Optimizer/block_pass.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c index 5c6880beea..6f3f1310a0 100644 --- a/ext/opcache/Optimizer/block_pass.c +++ b/ext/opcache/Optimizer/block_pass.c @@ -204,7 +204,8 @@ static int find_code_blocks(zend_op_array *op_array, zend_cfg *cfg, zend_optimiz  		j = 0;  		for (i = 0; i< op_array->last_brk_cont; i++) {  			if (op_array->brk_cont_array[i].start >= 0 && -			    op_array->opcodes[op_array->brk_cont_array[i].brk].opcode == ZEND_FREE) { +			    (op_array->opcodes[op_array->brk_cont_array[i].brk].opcode == ZEND_FREE || +			     op_array->opcodes[op_array->brk_cont_array[i].brk].opcode == ZEND_END_SILENCE)) {  				int parent = op_array->brk_cont_array[i].parent;  				while (parent >= 0 && @@ -223,7 +224,8 @@ static int find_code_blocks(zend_op_array *op_array, zend_cfg *cfg, zend_optimiz  			j = 0;  			for (i = 0; i< op_array->last_brk_cont; i++) {  				if (op_array->brk_cont_array[i].start >= 0 && -				    op_array->opcodes[op_array->brk_cont_array[i].brk].opcode == ZEND_FREE) { +				    (op_array->opcodes[op_array->brk_cont_array[i].brk].opcode == ZEND_FREE || +				     op_array->opcodes[op_array->brk_cont_array[i].brk].opcode == ZEND_END_SILENCE)) {  					if (i != j) {  						op_array->brk_cont_array[j] = op_array->brk_cont_array[i];  					}  | 
