]> granicus.if.org Git - php/commitdiff
Fixed is_callable/function_exists with disable_functions
authorXinchen Hui <laruence@php.net>
Sat, 28 Mar 2015 09:07:11 +0000 (17:07 +0800)
committerXinchen Hui <laruence@php.net>
Sat, 28 Mar 2015 09:07:11 +0000 (17:07 +0800)
Zend/tests/bug69315.phpt
ext/opcache/Optimizer/pass1_5.c

index 91f7ad8c67bec37b171ffcc97e90568cde4c2862..71dac4298f8d4088d543164899160bb6bb309517 100644 (file)
@@ -1,7 +1,7 @@
 --TEST--
 Bug #69315 (disable_functions behaviors inconsistently)
 --INI--
-disable_functions=strlen,defined,call_user_func,constant,is_callable,is_string
+disable_functions=strlen,defined,call_user_func,constant,is_string
 --FILE--
 <?php
 
index ef62d995358fc738a7b08be63f7c49aecf57aee7..c042940b0e9955f2ad76ed388a771166018ca6b6 100644 (file)
@@ -431,10 +431,12 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx)
                            Z_TYPE(ZEND_OP1_LITERAL(send1_opline)) == IS_STRING) {
                                if ((Z_STRLEN(ZEND_OP2_LITERAL(init_opline)) == sizeof("function_exists")-1 &&
                                        !memcmp(Z_STRVAL(ZEND_OP2_LITERAL(init_opline)),
-                                               "function_exists", sizeof("function_exists")-1)) ||
+                                               "function_exists", sizeof("function_exists")-1) &&
+                                       !zend_optimizer_is_disabled_func("function_exists", sizeof("function_exists") - 1)) ||
                                        (Z_STRLEN(ZEND_OP2_LITERAL(init_opline)) == sizeof("is_callable")-1 &&
                                        !memcmp(Z_STRVAL(ZEND_OP2_LITERAL(init_opline)),
-                                               "is_callable", sizeof("is_callable")))) {
+                                               "is_callable", sizeof("is_callable")) &&
+                                       !zend_optimizer_is_disabled_func("is_callable", sizeof("is_callable") - 1))) {
                                        zend_internal_function *func;
                                        zend_string *lc_name = zend_string_tolower(
                                                        Z_STR(ZEND_OP1_LITERAL(send1_opline)));