diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-08-13 11:19:58 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-08-13 11:19:58 +0200 |
commit | 4eeb41d1ea91fe7a44759f788ad5920eac8df0ef (patch) | |
tree | 9101f5f27a3d058c04b60c1728b6f4f1ff43bf04 | |
parent | 18f2918a0fcf66562a5e7d964188c188660e9728 (diff) | |
download | php-git-4eeb41d1ea91fe7a44759f788ad5920eac8df0ef.tar.gz |
Fixed bug #77191
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/opcache/Optimizer/dce.c | 3 | ||||
-rw-r--r-- | ext/opcache/tests/bug77191.phpt | 17 |
3 files changed, 23 insertions, 1 deletions
@@ -24,6 +24,10 @@ PHP NEWS - MySQLnd: . Fixed bug #78179 (MariaDB server version incorrectly detected). (cmb) +- Opcache: + . Fixed bug #77191 (Assertion failure in dce_live_ranges() when silencing is + used). (Nikita) + - Standard: . Fixed bug #69100 (Bus error from stream_copy_to_stream (file -> SSL stream) with invalid length). (Nikita) diff --git a/ext/opcache/Optimizer/dce.c b/ext/opcache/Optimizer/dce.c index c146599a35..16143af1ea 100644 --- a/ext/opcache/Optimizer/dce.c +++ b/ext/opcache/Optimizer/dce.c @@ -565,7 +565,8 @@ static void dce_live_ranges(context *ctx, zend_op_array *op_array, zend_ssa *ssa if ((op_array->opcodes[def].result_type == IS_UNUSED) && (UNEXPECTED(op_array->opcodes[def].opcode == ZEND_EXT_STMT) || - UNEXPECTED(op_array->opcodes[def].opcode == ZEND_EXT_FCALL_END))) { + UNEXPECTED(op_array->opcodes[def].opcode == ZEND_EXT_FCALL_END) || + UNEXPECTED(op_array->opcodes[def].opcode == ZEND_END_SILENCE))) { def--; } diff --git a/ext/opcache/tests/bug77191.phpt b/ext/opcache/tests/bug77191.phpt new file mode 100644 index 0000000000..ca04b4aadd --- /dev/null +++ b/ext/opcache/tests/bug77191.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #77191: Assertion failure in dce_live_ranges() when silencing is used +--FILE-- +<?php +function test($x) { + switch (@$x['y']) { + case 1: return 'a'; + case 2: return 'b'; + case 3: return 'c'; + case 4: return 'd'; + } + return 'e'; +} +var_dump(test([])); +?> +--EXPECT-- +string(1) "e" |