1
0
mirror of https://github.com/php/php-src.git synced 2026-04-17 13:01:02 +02:00

Partly revert and reintroduce hash table entries for the ctor.

# Obviously not the brightest idea i had today.
This commit is contained in:
Marcus Boerger
2003-09-03 21:21:18 +00:00
parent 430bfc6f09
commit be8287e55c

View File

@@ -1582,6 +1582,8 @@ ZEND_API void function_add_ref(zend_function *function)
static void do_inherit_parent_constructor(zend_class_entry *ce)
{
zend_function *function;
if (!ce->parent) {
return;
}
@@ -1605,10 +1607,24 @@ static void do_inherit_parent_constructor(zend_class_entry *ce)
if (!ce->destructor) {
ce->destructor = ce->parent->destructor;
}
if (!ce->constructor) {
ce->constructor = ce->parent->constructor;
if (ce->constructor) {
return;
}
if (zend_hash_find(&ce->parent->function_table, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME), (void **)&function)==SUCCESS) {
/* inherit parent's constructor */
zend_hash_update(&ce->function_table, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME), function, sizeof(zend_function), NULL);
function_add_ref(function);
} else {
/* don't inherit the old style constructor if we already have the new style cconstructor */
if (!zend_hash_exists(&ce->function_table, ce->name, ce->name_length+1)) {
if (zend_hash_find(&ce->parent->function_table, ce->parent->name, ce->parent->name_length+1, (void **)&function)==SUCCESS) {
/* inherit parent's constructor */
zend_hash_update(&ce->function_table, ce->name, ce->name_length+1, function, sizeof(zend_function), NULL);
function_add_ref(function);
}
}
}
ce->constructor = ce->parent->constructor;
}