streams). (andrew dot minerd at sellingsource dot com, Ilia)
- Fixed bug #42233 (Problems with æøå in extract()). (Jani)
- Fixed bug #42222 (possible buffer overflow in php_openssl_make_REQ). (Pierre)
+- Fixed bug #42211 (property_exists() fails to find protected properties from
+ a parent class). (Dmitry)
- Fixed bug #42208 (substr_replace() crashes when the same array is passed
more than once). (crrodriguez at suse dot de, Ilia)
- Fixed bug #42198 (SCRIPT_NAME and PHP_SELF truncated when inside a userdir
--- /dev/null
+--TEST--
+Bug #42211 (property_exists() fails to find protected properties from a parent class)
+--FILE--
+<?php
+class A {
+ function foo() {
+ var_dump(property_exists('B', 'publicBar'));
+ var_dump(property_exists('B', 'protectedBar'));
+ var_dump(property_exists('B', 'privateBar'));
+ }
+}
+
+class B extends A {
+ static public $publicBar = "ok";
+ static protected $protectedBar = "ok";
+ static private $privateBar = "fail";
+}
+
+$a = new A();
+$a->foo();
+$b = new B();
+$b->foo();
+--EXPECT--
+bool(true)
+bool(false)
+bool(false)
+bool(true)
+bool(true)
+bool(false)
+
}
zend_unmangle_property_name(property_info->name, property_info->name_length, &class_name, &prop_name);
if (!strncmp(class_name, "*", 1)) {
- if (instanceof_function(EG(scope), ce TSRMLS_CC)) {
+ if (instanceof_function(EG(scope), ce TSRMLS_CC) ||
+ (EG(This) && instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC))) {
RETURN_TRUE;
}
RETURN_FALSE;