summaryrefslogtreecommitdiff
path: root/Zend/zend_object_handlers.c
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2008-05-03 00:38:55 +0000
committerFelipe Pena <felipe@php.net>2008-05-03 00:38:55 +0000
commita578b0cbcc1a8705e665e559219beea769ce4007 (patch)
tree9c014243d8f698827289a3fcdba5580d9729a427 /Zend/zend_object_handlers.c
parenta72b8f96ed79d640e83b24d84d0207e37c4854ab (diff)
downloadphp-git-a578b0cbcc1a8705e665e559219beea769ce4007.tar.gz
- MFH: Fixed bug #44899 (__isset usage changes behavior of empty()) (patch by Etienne Kneuss)
Diffstat (limited to 'Zend/zend_object_handlers.c')
-rw-r--r--Zend/zend_object_handlers.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index dbc4cc42e4..20a465dca3 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -1116,14 +1116,20 @@ static int zend_std_has_property(zval *object, zval *member, int has_set_exists
if (rv) {
result = zend_is_true(rv);
zval_ptr_dtor(&rv);
- if (has_set_exists && result && !EG(exception) && zobj->ce->__get && !guard->in_get) {
- guard->in_get = 1;
- rv = zend_std_call_getter(object, member TSRMLS_CC);
- guard->in_get = 0;
- if (rv) {
- Z_ADDREF_P(rv);
- result = i_zend_is_true(rv);
- zval_ptr_dtor(&rv);
+ if (has_set_exists && result) {
+ if (!EG(exception) && zobj->ce->__get && !guard->in_get) {
+ guard->in_get = 1;
+ rv = zend_std_call_getter(object, member TSRMLS_CC);
+ guard->in_get = 0;
+ if (rv) {
+ Z_ADDREF_P(rv);
+ result = i_zend_is_true(rv);
+ zval_ptr_dtor(&rv);
+ } else {
+ result = 0;
+ }
+ } else {
+ result = 0;
}
}
}