From: Marcus Boerger Date: Thu, 11 Aug 2005 20:32:01 +0000 (+0000) Subject: - For internal classes we must auto generate the abstract class flags. X-Git-Tag: PRE_NEW_OCI8_EXTENSION~341 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a4e103283655383ad1270895fd2c726e1cbedeb9;p=php - For internal classes we must auto generate the abstract class flags. # Actually providing the flags while registering the class is not possible # since that would require a major API change. --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 0ab89a4766..a7c09b0a14 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -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); + } }