From: Andrei Zmievski Date: Thu, 8 Jan 2009 21:39:06 +0000 (+0000) Subject: Handle __call() on protected/private method access for callbacks too. X-Git-Tag: php-5.2.9RC1~137 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7ac1f7eee7511a32704c26e03f71abb6729e0382;p=php Handle __call() on protected/private method access for callbacks too. --- diff --git a/Zend/tests/access_modifiers_012.phpt b/Zend/tests/access_modifiers_012.phpt new file mode 100644 index 0000000000..ac4d72ce1d --- /dev/null +++ b/Zend/tests/access_modifiers_012.phpt @@ -0,0 +1,21 @@ +--TEST-- +Trigger __call() in lieu of non visible methods when called via a callback. +--FILE-- + +--EXPECTF-- +In __call() for method none() +In __call() for method prot() +In __call() for method priv() diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 37340a7a3f..4a8716371e 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -2216,6 +2216,10 @@ static int zend_is_callable_check_func(int check_flags, zval ***zobj_ptr_ptr, ze retval = 0; } } + if (!retval && *zobj_ptr_ptr && *ce_ptr && (*ce_ptr)->__call != 0) { + retval = (*ce_ptr)->__call != NULL; + *fptr_ptr = (*ce_ptr)->__call; + } } } }