From ad8aa49f065a6563da73090d1a3f228719c072f9 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 8 Aug 2007 13:32:58 +0000 Subject: [PATCH] Fixed bug #42211 (property_exists() fails to find protected properties from a parent class) --- Zend/tests/bug42211.phpt | 30 ++++++++++++++++++++++++++++++ Zend/zend_builtin_functions.c | 3 ++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 Zend/tests/bug42211.phpt diff --git a/Zend/tests/bug42211.phpt b/Zend/tests/bug42211.phpt new file mode 100644 index 0000000000..e9f2a1e212 --- /dev/null +++ b/Zend/tests/bug42211.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #42211 (property_exists() fails to find protected properties from a parent class) +--FILE-- +foo(); +$b = new B(); +$b->foo(); +--EXPECT-- +bool(true) +bool(false) +bool(false) +bool(true) +bool(true) +bool(false) + diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index e89552bbcc..976c713090 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1014,7 +1014,8 @@ ZEND_FUNCTION(property_exists) } zend_u_unmangle_property_name(Z_TYPE_PP(property), property_info->name, property_info->name_length, &class_name, &prop_name); if (class_name.s[0] == '*') { - 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; -- 2.40.0