]> granicus.if.org Git - php/commitdiff
Fixed bug #43483 (get_class_methods() does not list all visible methods)
authorDmitry Stogov <dmitry@php.net>
Thu, 21 Feb 2008 15:14:27 +0000 (15:14 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 21 Feb 2008 15:14:27 +0000 (15:14 +0000)
Zend/tests/bug43483.phpt [new file with mode: 0644]
Zend/zend_builtin_functions.c

diff --git a/Zend/tests/bug43483.phpt b/Zend/tests/bug43483.phpt
new file mode 100644 (file)
index 0000000..0cfbfe8
--- /dev/null
@@ -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
+)
index f450e57436164e00085ff20ed626205ae2fe5b9c..c30163a0b0cbdf3c333c85935d14471b4b8e72bd 100644 (file)
@@ -910,7 +910,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;