summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2008-02-21 15:14:13 +0000
committerDmitry Stogov <dmitry@php.net>2008-02-21 15:14:13 +0000
commit7eb1befffe4f9ffaaedb0e627e8adfdca90d79db (patch)
tree0c81f535e6527060764ca9e22adc701cd6e6cf25 /Zend
parentffa42113ffe733ce6c610a321c67caa0b29667c0 (diff)
downloadphp-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.phpt24
-rw-r--r--Zend/zend_builtin_functions.c2
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;