summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/reflection/php_reflection.c3
-rwxr-xr-xext/reflection/tests/bug38194.phpt13
2 files changed, 14 insertions, 2 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 7118bfbec8..3afd5275e6 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -3574,8 +3574,7 @@ ZEND_METHOD(reflection_class, isSubclassOf)
return;
}
-
- RETURN_BOOL(instanceof_function(ce, class_ce TSRMLS_CC));
+ RETURN_BOOL((ce != class_ce && instanceof_function(ce, class_ce TSRMLS_CC)));
}
/* }}} */
diff --git a/ext/reflection/tests/bug38194.phpt b/ext/reflection/tests/bug38194.phpt
new file mode 100755
index 0000000000..5c888af59d
--- /dev/null
+++ b/ext/reflection/tests/bug38194.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Reflection Bug #38194 (ReflectionClass::isSubclassOf() returns TRUE for the class itself)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--FILE--
+<?php
+class Object { }
+
+$objectClass= new ReflectionClass('Object');
+var_dump($objectClass->isSubclassOf($objectClass));
+?>
+--EXPECT--
+bool(false)