summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Zmievski <andrei@php.net>2001-02-27 05:18:34 +0000
committerAndrei Zmievski <andrei@php.net>2001-02-27 05:18:34 +0000
commitcb00ed2bd36afcc76b3dd47ba886e53ff626ab0d (patch)
tree0250d88ac057ec894bad29bb83f208cf640bb863
parent18396f987576061f8e7d5d12b488f412787c7e98 (diff)
downloadphp-git-cb00ed2bd36afcc76b3dd47ba886e53ff626ab0d.tar.gz
Don't overwrite existing handlers with parent ones.
-rw-r--r--Zend/zend_compile.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index a3a0c31b82..df35e91949 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -1103,9 +1103,12 @@ void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent_ce)
zend_hash_merge(&ce->default_properties, &parent_ce->default_properties, (void (*)(void *)) zval_add_ref, (void *) &tmp, sizeof(zval *), 0);
zend_hash_merge(&ce->function_table, &parent_ce->function_table, (void (*)(void *)) function_add_ref, &tmp_zend_function, sizeof(zend_function), 0);
ce->parent = parent_ce;
- ce->handle_property_get = parent_ce->handle_property_get;
- ce->handle_property_set = parent_ce->handle_property_set;
- ce->handle_function_call = parent_ce->handle_function_call;
+ if (!ce->handle_property_get)
+ ce->handle_property_get = parent_ce->handle_property_get;
+ if (!ce->handle_property_set)
+ ce->handle_property_set = parent_ce->handle_property_set;
+ if (!ce->handle_function_call)
+ ce->handle_function_call = parent_ce->handle_function_call;
do_inherit_parent_constructor(ce);
}