summaryrefslogtreecommitdiff
path: root/Zend/zend_vm_execute.h
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_vm_execute.h')
-rw-r--r--Zend/zend_vm_execute.h63
1 files changed, 38 insertions, 25 deletions
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index fb6826e8ff..8013088595 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -490,6 +490,19 @@ static int ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ zend_op *opline = EX(opline);
+ zend_class_entry **pce, **pce_orig;
+
+ if (zend_hash_find(EG(class_table), Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant)+1, (void**)&pce) == FAILURE ||
+ (zend_hash_find(EG(class_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), (void**)&pce_orig) == SUCCESS &&
+ *pce != *pce_orig)) {
+ do_bind_inherited_class(opline, EG(class_table), EX_T(opline->extended_value).class_entry, 0 TSRMLS_CC);
+ }
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_DECLARE_FUNCTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
do_bind_function(EX(opline), EG(function_table), 0);
@@ -34141,31 +34154,31 @@ void zend_init_opcodes_handlers(void)
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
+ ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,