Exposed in Symfony due to exit changes.
if (Z_TYPE(default_value) == IS_CONSTANT_AST) {
zend_ast *ast = Z_ASTVAL(default_value);
RETVAL_BOOL(ast->kind == ZEND_AST_CONSTANT || ast->kind == ZEND_AST_CONSTANT_CLASS);
- zval_ptr_dtor_nogc(&default_value);
} else {
- RETURN_FALSE;
+ RETVAL_FALSE;
}
+
+ zval_ptr_dtor_nogc(&default_value);
}
/* }}} */
--- /dev/null
+--TEST--
+Check that isDefaultValueConstant() does not leak
+--FILE--
+<?php
+
+class Test {
+ public function method($param = [123]) {}
+}
+
+$rp = new ReflectionParameter(['Test', 'method'], 'param');
+var_dump($rp->isDefaultValueAvailable());
+var_dump($rp->isDefaultValueConstant());
+var_dump($rp->getDefaultValue());
+
+?>
+--EXPECT--
+bool(true)
+bool(false)
+array(1) {
+ [0]=>
+ int(123)
+}