]> granicus.if.org Git - php/commitdiff
Make opcache infer array_key_exists is non-null bool
authorTyson Andre <tysonandre775@hotmail.com>
Tue, 19 Nov 2019 13:58:48 +0000 (08:58 -0500)
committerDmitry Stogov <dmitry@zend.com>
Tue, 19 Nov 2019 21:11:51 +0000 (00:11 +0300)
array_key_exists now throws a TypeError instead of returning null
for invalid arguments after 14bdb0cfc7b62205c75f6d5c783e343259796776

ext/opcache/Optimizer/zend_inference.c

index cb31ea21f2cba812f1fb57b4ca7e5eec24f92c67..975853a9eb559b0d0034ac3b936fd83603f8e0a8 100644 (file)
@@ -2480,14 +2480,8 @@ static int zend_update_type_info(const zend_op_array *op_array,
                case ZEND_ISSET_ISEMPTY_STATIC_PROP:
                case ZEND_ASSERT_CHECK:
                case ZEND_IN_ARRAY:
-                       UPDATE_SSA_TYPE(MAY_BE_FALSE|MAY_BE_TRUE, ssa_ops[i].result_def);
-                       break;
                case ZEND_ARRAY_KEY_EXISTS:
-                       tmp = MAY_BE_FALSE|MAY_BE_TRUE;
-                       if (t2 & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_ARRAY|MAY_BE_OBJECT))) {
-                               tmp |= MAY_BE_NULL;
-                       }
-                       UPDATE_SSA_TYPE(tmp, ssa_ops[i].result_def);
+                       UPDATE_SSA_TYPE(MAY_BE_FALSE|MAY_BE_TRUE, ssa_ops[i].result_def);
                        break;
                case ZEND_CAST:
                        if (ssa_ops[i].op1_def >= 0) {