summaryrefslogtreecommitdiff
path: root/Zend/zend_execute_API.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-09-11 15:31:04 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-09-12 16:41:18 +0200
commit4b9ebd837b6fc20bd907ae858375737e91365ede (patch)
treed3384a015615af07d26e296fca42802b8a02b750 /Zend/zend_execute_API.c
parent679cbee870691936f7f426c0cb7ecaa70018b563 (diff)
downloadphp-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.c1
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;