]> granicus.if.org Git - php/commitdiff
- For internal classes we must auto generate the abstract class flags.
authorMarcus Boerger <helly@php.net>
Thu, 11 Aug 2005 20:32:01 +0000 (20:32 +0000)
committerMarcus Boerger <helly@php.net>
Thu, 11 Aug 2005 20:32:01 +0000 (20:32 +0000)
# Actually providing the flags while registering the class is not possible
# since that would require a major API change.

Zend/zend_compile.c

index 0ab89a476619f79cfdf60ecc63c74a8ebf0fa612..a7c09b0a147ed06498ac777048530f2e733929d6 100644 (file)
@@ -2144,8 +2144,12 @@ ZEND_API void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent
        zend_hash_merge(&ce->constants_table, &parent_ce->constants_table, (void (*)(void *)) zval_add_ref, NULL, sizeof(zval *), 0);
        zend_hash_merge_ex(&ce->function_table, &parent_ce->function_table, (copy_ctor_func_t) do_inherit_method, sizeof(zend_function), (merge_checker_func_t) do_inherit_method_check, ce);
        do_inherit_parent_constructor(ce);
-       
-       zend_verify_abstract_class(ce TSRMLS_CC);
+
+       if (ce->ce_flags & ZEND_ACC_IMPLICIT_ABSTRACT_CLASS && ce->type == ZEND_INTERNAL_CLASS) {
+               ce->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
+       } else {
+               zend_verify_abstract_class(ce TSRMLS_CC);
+       }
 }