diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-09-11 15:31:04 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-09-12 16:41:18 +0200 |
commit | 4b9ebd837b6fc20bd907ae858375737e91365ede (patch) | |
tree | d3384a015615af07d26e296fca42802b8a02b750 /Zend/zend_execute_API.c | |
parent | 679cbee870691936f7f426c0cb7ecaa70018b563 (diff) | |
download | php-git-4b9ebd837b6fc20bd907ae858375737e91365ede.tar.gz |
Allow throwing exception while loading parent class
This is a fix for symfony/symfony#32995.
The behavior is:
* Throwing exception when loading parent/interface is allowed
(and we will also throw one if the class is simply not found).
* If this happens, the bucket key for the class is reset, so
it's possibly to try registering the same class again.
* However, if the class has already been used due to a variance
obligation, the exception is upgraded to a fatal error, as we
cannot safely unregister the class stub anymore.
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r-- | Zend/zend_execute_API.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index ddef72ebd3..3c78d2524d 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -921,6 +921,7 @@ ZEND_API zend_class_entry *zend_lookup_class_ex(zend_string *name, zend_string * if ((flags & ZEND_FETCH_CLASS_ALLOW_UNLINKED) || ((flags & ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED) && (ce->ce_flags & ZEND_ACC_NEARLY_LINKED))) { + ce->ce_flags |= ZEND_ACC_HAS_UNLINKED_USES; return ce; } return NULL; |