From 1cc9933130059993c09e43d95dc7a4dfc9621ab2 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Tue, 12 Jun 2018 20:55:06 +0800 Subject: [PATCH] Fixed bug #76463 (var has array key type but not value type) --- NEWS | 3 +++ ext/opcache/Optimizer/zend_inference.c | 2 +- ext/opcache/tests/bug76463.phpt | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 ext/opcache/tests/bug76463.phpt diff --git a/NEWS b/NEWS index f5f84fe09e7..d702562e088 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,9 @@ PHP NEWS - Interbase: . Fixed bug #76443 (php+php_interbase.dll crash on module_shutdown). (Kalle) +- Opcache: + . Fixed bug #76463 (var has array key type but not value type). (Laruence) + - ZIP: . Fixed bug #76461 (OPSYS_Z_CPM defined instead of OPSYS_CPM). (Dennis Birkholz, Remi) diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index 4414fb78d83..9298f983e30 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -2406,7 +2406,7 @@ static int zend_update_type_info(const zend_op_array *op_array, if (t1 & MAY_BE_OBJECT) { tmp |= MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; } else { - tmp |= ((t1 & MAY_BE_ANY) << MAY_BE_ARRAY_SHIFT) | MAY_BE_ARRAY_KEY_LONG; + tmp |= ((t1 & MAY_BE_ANY) << MAY_BE_ARRAY_SHIFT) | ((t1 & MAY_BE_ANY)? MAY_BE_ARRAY_KEY_LONG : 0); } } UPDATE_SSA_TYPE(tmp, ssa_ops[i].result_def); diff --git a/ext/opcache/tests/bug76463.phpt b/ext/opcache/tests/bug76463.phpt new file mode 100644 index 00000000000..0fa9be990cb --- /dev/null +++ b/ext/opcache/tests/bug76463.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #76463 (var has array key type but not value type) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--SKIPIF-- + +--FILE-- + +okey +--EXPECT-- +okey