summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.h
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_compile.h
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_compile.h')
-rw-r--r--Zend/zend_compile.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index 2a8ac77145..f82507c88c 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -229,7 +229,7 @@ typedef struct _zend_oparray_context {
/* op_array or class is preloaded | | | */
#define ZEND_ACC_PRELOADED (1 << 10) /* X | X | | */
/* | | | */
-/* Class Flags (unused: 23...) | | | */
+/* Class Flags (unused: 24...) | | | */
/* =========== | | | */
/* | | | */
/* Special class types | | | */
@@ -281,6 +281,9 @@ typedef struct _zend_oparray_context {
/* Class is linked apart from variance obligations. | | | */
#define ZEND_ACC_NEARLY_LINKED (1 << 22) /* X | | | */
/* | | | */
+/* Whether this class was used in its unlinked state. | | | */
+#define ZEND_ACC_HAS_UNLINKED_USES (1 << 23) /* X | | | */
+/* | | | */
/* Function Flags (unused: 23, 26) | | | */
/* ============== | | | */
/* | | | */