diff options
| author | Felipe Pena <felipe@php.net> | 2008-05-03 00:38:55 +0000 |
|---|---|---|
| committer | Felipe Pena <felipe@php.net> | 2008-05-03 00:38:55 +0000 |
| commit | a578b0cbcc1a8705e665e559219beea769ce4007 (patch) | |
| tree | 9c014243d8f698827289a3fcdba5580d9729a427 /Zend/zend_object_handlers.c | |
| parent | a72b8f96ed79d640e83b24d84d0207e37c4854ab (diff) | |
| download | php-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.c | 22 |
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; } } } |
