summaryrefslogtreecommitdiff
path: root/Zend/zend_closures.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_closures.c')
-rw-r--r--Zend/zend_closures.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c
index b5f7e0ea0e..f0fba8e174 100644
--- a/Zend/zend_closures.c
+++ b/Zend/zend_closures.c
@@ -136,8 +136,7 @@ static zend_function *zend_closure_get_method(zval **object_ptr, char *method_na
static zval *zend_closure_read_property(zval *object, zval *member, int type TSRMLS_DC) /* {{{ */
{
ZEND_CLOSURE_PROPERTY_ERROR();
- Z_ADDREF(EG(uninitialized_zval));
- return &EG(uninitialized_zval);
+ return NULL;
}
/* }}} */
@@ -209,7 +208,7 @@ static zend_object_value zend_closure_new(zend_class_entry *class_type TSRMLS_DC
}
/* }}} */
-int zend_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC) /* {{{ */
+int zend_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval **zobj_ptr, zval ***zobj_ptr_ptr TSRMLS_DC) /* {{{ */
{
zend_closure *closure;
@@ -224,11 +223,17 @@ int zend_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, zend_function
if (zobj_ptr) {
*zobj_ptr = closure->this_ptr;
}
+ if (zobj_ptr_ptr) {
+ *zobj_ptr_ptr = &closure->this_ptr;
+ }
*ce_ptr = Z_OBJCE_P(closure->this_ptr);
} else {
if (zobj_ptr) {
*zobj_ptr = NULL;
}
+ if (zobj_ptr_ptr) {
+ *zobj_ptr_ptr = NULL;
+ }
*ce_ptr = closure->func.common.scope;
}
return SUCCESS;