]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.4'
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 8 Oct 2019 13:52:18 +0000 (15:52 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 8 Oct 2019 13:52:18 +0000 (15:52 +0200)
1  2 
Zend/zend_compile.c

index 906b544a15af3235bf3587d17ff830c787de1f7b,255b89d95f065896c9dd916f1f55148643c3a868..b169093de5a4050a55befc912e67ba84c0710e10
@@@ -5352,29 -5308,6 +5352,31 @@@ static zend_type zend_compile_typename(
  }
  /* }}} */
  
++/* May convert value from int to float. */
 +static zend_bool zend_is_valid_default_value(zend_type type, zval *value)
 +{
 +      ZEND_ASSERT(ZEND_TYPE_IS_SET(type));
 +      if (Z_TYPE_P(value) == IS_NULL && ZEND_TYPE_ALLOW_NULL(type)) {
 +              return 1;
 +      }
 +
 +      if (ZEND_TYPE_IS_CLASS(type)) {
 +              return 0;
 +      }
 +      if (ZEND_TYPE_CONTAINS_CODE(type, Z_TYPE_P(value))) {
 +              return 1;
 +      }
 +      if ((ZEND_TYPE_MASK(type) & MAY_BE_DOUBLE) && Z_TYPE_P(value) == IS_LONG) {
 +              /* Integers are allowed as initializers for floating-point values. */
++              convert_to_double(value);
 +              return 1;
 +      }
 +      if ((ZEND_TYPE_MASK(type) & MAY_BE_ITERABLE) && Z_TYPE_P(value) == IS_ARRAY) {
 +              return 1;
 +      }
 +      return 0;
 +}
 +
  void zend_compile_params(zend_ast *ast, zend_ast *return_type_ast) /* {{{ */
  {
        zend_ast_list *list = zend_ast_get_list(ast);