Merge branch 'PHP-8.1'

* PHP-8.1:
  Fix #81681: ReflectionEnum throwing exceptions
This commit is contained in:
Christoph M. Becker 2021-12-02 23:22:47 +01:00
commit 2658925e60
No known key found for this signature in database
GPG key ID: D66C9593118BCCB6
2 changed files with 20 additions and 2 deletions

View file

@ -4751,7 +4751,7 @@ ZEND_METHOD(ReflectionClass, isInstantiable)
RETURN_THROWS();
}
GET_REFLECTION_OBJECT_PTR(ce);
if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS)) {
if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS | ZEND_ACC_ENUM)) {
RETURN_FALSE;
}
@ -4776,7 +4776,7 @@ ZEND_METHOD(ReflectionClass, isCloneable)
RETURN_THROWS();
}
GET_REFLECTION_OBJECT_PTR(ce);
if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS)) {
if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS | ZEND_ACC_ENUM)) {
RETURN_FALSE;
}
if (!Z_ISUNDEF(intern->obj)) {

View file

@ -0,0 +1,18 @@
--TEST--
Bug #81681 (ReflectionEnum throwing exceptions)
--FILE--
<?php
enum Status
{
case Draft;
case Published;
case Archived;
}
$reflectionEnum = new \ReflectionEnum('\Status');
var_dump($reflectionEnum->isInstantiable());
var_dump($reflectionEnum->isCloneable());
?>
--EXPECT--
bool(false)
bool(false)