Evaluation of few more constant functions

This commit is contained in:
Dmitry Stogov 2017-07-10 17:01:15 +03:00
parent 07f45d8a3d
commit 63bbed5e71

View file

@ -570,7 +570,8 @@ static inline int ct_eval_func_call(
int overflow; int overflow;
if ((zend_string_equals_literal(name, "array_keys") if ((zend_string_equals_literal(name, "array_keys")
|| zend_string_equals_literal(name, "array_values")) || zend_string_equals_literal(name, "array_values")
|| zend_string_equals_literal(name, "array_flip"))
&& num_args == 1 && num_args == 1
&& Z_TYPE_P(args[0]) == IS_ARRAY) { && Z_TYPE_P(args[0]) == IS_ARRAY) {
/* pass */ /* pass */
@ -584,7 +585,10 @@ static inline int ct_eval_func_call(
} else if ((zend_string_equals_literal(name, "array_merge") } else if ((zend_string_equals_literal(name, "array_merge")
|| zend_string_equals_literal(name, "array_replace") || zend_string_equals_literal(name, "array_replace")
|| zend_string_equals_literal(name, "array_merge_recursive") || zend_string_equals_literal(name, "array_merge_recursive")
|| zend_string_equals_literal(name, "array_merge_recursive")) || zend_string_equals_literal(name, "array_merge_recursive")
|| zend_string_equals_literal(name, "array_diff")
|| zend_string_equals_literal(name, "array_diff_assoc")
|| zend_string_equals_literal(name, "array_diff_key"))
&& num_args > 0) { && num_args > 0) {
for (i = 0; i < num_args; i++) { for (i = 0; i < num_args; i++) {
if (Z_TYPE_P(args[i]) != IS_ARRAY) { if (Z_TYPE_P(args[i]) != IS_ARRAY) {
@ -612,6 +616,11 @@ static inline int ct_eval_func_call(
} ZEND_HASH_FOREACH_END(); } ZEND_HASH_FOREACH_END();
} }
/* pass */ /* pass */
} else if (zend_string_equals_literal(name, "version_comapre")
&& (num_args == 2 || (num_args == 3 && Z_TYPE_P(args[2]) == IS_STRING))
&& Z_TYPE_P(args[0]) == IS_STRING
&& Z_TYPE_P(args[1]) == IS_STRING) {
/* pass */
} else { } else {
return FAILURE; return FAILURE;
} }