diff options
| author | Dmitry Stogov <dmitry@php.net> | 2008-02-21 15:14:13 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2008-02-21 15:14:13 +0000 |
| commit | 7eb1befffe4f9ffaaedb0e627e8adfdca90d79db (patch) | |
| tree | 0c81f535e6527060764ca9e22adc701cd6e6cf25 /Zend | |
| parent | ffa42113ffe733ce6c610a321c67caa0b29667c0 (diff) | |
| download | php-git-7eb1befffe4f9ffaaedb0e627e8adfdca90d79db.tar.gz | |
Fixed bug #43483 (get_class_methods() does not list all visible methods)
Diffstat (limited to 'Zend')
| -rw-r--r-- | Zend/tests/bug43483.phpt | 24 | ||||
| -rw-r--r-- | Zend/zend_builtin_functions.c | 2 |
2 files changed, 25 insertions, 1 deletions
diff --git a/Zend/tests/bug43483.phpt b/Zend/tests/bug43483.phpt new file mode 100644 index 0000000000..0cfbfe8780 --- /dev/null +++ b/Zend/tests/bug43483.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #43483 (get_class_methods() does not list all visible methods) +--FILE-- +<?php +class C { + public static function test() { + D::prot(); + print_r(get_class_methods("D")); + } +} +class D extends C { + protected static function prot() { + echo "Successfully called D::prot().\n"; + } +} +D::test(); +?> +--EXPECT-- +Successfully called D::prot(). +Array +( + [0] => prot + [1] => test +) diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 2ddb0cbedd..bd84c263f1 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -867,7 +867,7 @@ ZEND_FUNCTION(get_class_methods) if ((mptr->common.fn_flags & ZEND_ACC_PUBLIC) || (EG(scope) && (((mptr->common.fn_flags & ZEND_ACC_PROTECTED) && - instanceof_function(EG(scope), mptr->common.scope TSRMLS_CC)) + zend_check_protected(mptr->common.scope, EG(scope))) || ((mptr->common.fn_flags & ZEND_ACC_PRIVATE) && EG(scope) == mptr->common.scope)))) { char *key; |
