Skip to content

Commit

Permalink
fix standard object handler for properties when type == BP_VAR_IS
Browse files Browse the repository at this point in the history
  • Loading branch information
krakjoe committed Mar 26, 2016
1 parent bd90f55 commit 373da7a
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions Zend/zend_object_handlers.c
Expand Up @@ -552,6 +552,31 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
goto exit;
}

/* magic isset */
if ((type == BP_VAR_IS) && zobj->ce->__isset) {
zval tmp_object, tmp_result;
zend_long *guard = zend_get_property_guard(zobj, Z_STR_P(member));

if (!((*guard) & IN_ISSET)) {
ZVAL_COPY(&tmp_object, object);
ZVAL_UNDEF(&tmp_result);

*guard |= IN_ISSET;
zend_std_call_issetter(&tmp_object, member, &tmp_result);
*guard &= ~IN_ISSET;

if (!zend_is_true(&tmp_result)) {
retval = &EG(uninitialized_zval);
zval_ptr_dtor(&tmp_object);
zval_ptr_dtor(&tmp_result);
goto exit;
}

zval_ptr_dtor(&tmp_object);
zval_ptr_dtor(&tmp_result);
}
}

/* magic get */
if (zobj->ce->__get) {
zend_long *guard = zend_get_property_guard(zobj, Z_STR_P(member));
Expand Down

0 comments on commit 373da7a

Please sign in to comment.