summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--Zend/tests/bug46409.phpt25
-rw-r--r--Zend/zend_API.c60
-rw-r--r--Zend/zend_API.h6
-rw-r--r--Zend/zend_closures.c8
-rw-r--r--Zend/zend_exceptions.c2
-rw-r--r--Zend/zend_execute_API.c26
-rwxr-xr-xZend/zend_interfaces.c4
-rw-r--r--Zend/zend_object_handlers.c8
-rw-r--r--Zend/zend_object_handlers.h2
-rw-r--r--Zend/zend_vm_def.h2
-rw-r--r--Zend/zend_vm_execute.h8
-rw-r--r--ext/curl/interface.c6
-rw-r--r--ext/dom/xpath.c2
-rw-r--r--ext/mysql/php_mysql.c4
-rw-r--r--ext/mysqli/mysqli.c4
-rwxr-xr-xext/pdo/pdo_dbh.c4
-rwxr-xr-xext/pdo/pdo_stmt.c26
-rw-r--r--ext/pdo_sqlite/sqlite_driver.c2
-rw-r--r--ext/pgsql/pgsql.c4
-rw-r--r--ext/reflection/php_reflection.c40
-rw-r--r--ext/soap/soap.c2
-rwxr-xr-xext/spl/php_spl.c16
-rwxr-xr-xext/spl/spl_directory.c4
-rw-r--r--ext/sqlite/sqlite.c4
-rw-r--r--ext/sqlite3/sqlite3.c2
-rw-r--r--ext/xml/xml.c2
-rw-r--r--ext/xsl/xsltprocessor.c2
-rw-r--r--main/streams/userspace.c4
29 files changed, 148 insertions, 133 deletions
diff --git a/NEWS b/NEWS
index 66c08468a4..a900f14170 100644
--- a/NEWS
+++ b/NEWS
@@ -41,6 +41,8 @@ PHP NEWS
- Fixed bug #46546 (Segmentation fault when using declare statement with
non-string value). (Felipe)
- Fixed bug #46421 (SplFileInfo not correctly handling /). (Etienne)
+- Fixed bug #46409 (__invoke method called outside of object context when using
+ array_map). (Dmitry)
- Fixed bug #46331 - (Segfault when using internal fileinfo magic file on big
endian systems). (Scott)
- Fixed bug #46285 (lastInsertId() returns "0" when a deferenced PDOStatement is
diff --git a/Zend/tests/bug46409.phpt b/Zend/tests/bug46409.phpt
new file mode 100644
index 0000000000..1986e88b10
--- /dev/null
+++ b/Zend/tests/bug46409.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #46409 (__invoke method called outside of object context when using array_map)
+--FILE--
+<?php
+class Callback {
+ protected $val = 'hello, world';
+
+ public function __invoke() {
+ return $this->val;
+ }
+}
+
+$cb = new Callback();
+echo $cb(),"\n";
+$a = array(1, 2);
+$b = array_map($cb, $a);
+print_r($b);
+?>
+--EXPECT--
+hello, world
+Array
+(
+ [0] => hello, world
+ [1] => hello, world
+)
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 324902d0fb..59ea7ab2bc 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -2329,8 +2329,8 @@ static int zend_is_callable_check_class(const char *name, int name_len, zend_fca
} else {
fcc->called_scope = EG(called_scope);
fcc->calling_scope = EG(scope);
- if (!fcc->object_pp) {
- fcc->object_pp = EG(This) ? &EG(This) : NULL;
+ if (!fcc->object_ptr) {
+ fcc->object_ptr = EG(This);
}
ret = 1;
}
@@ -2343,8 +2343,8 @@ static int zend_is_callable_check_class(const char *name, int name_len, zend_fca
} else {
fcc->called_scope = EG(called_scope);
fcc->calling_scope = EG(scope)->parent;
- if (!fcc->object_pp) {
- fcc->object_pp = EG(This) ? &EG(This) : NULL;
+ if (!fcc->object_ptr) {
+ fcc->object_ptr = EG(This);
}
ret = 1;
}
@@ -2355,8 +2355,8 @@ static int zend_is_callable_check_class(const char *name, int name_len, zend_fca
} else {
fcc->called_scope = EG(called_scope);
fcc->calling_scope = EG(called_scope);
- if (!fcc->object_pp) {
- fcc->object_pp = EG(This) ? &EG(This) : NULL;
+ if (!fcc->object_ptr) {
+ fcc->object_ptr = EG(This);
}
ret = 1;
}
@@ -2364,13 +2364,13 @@ static int zend_is_callable_check_class(const char *name, int name_len, zend_fca
zend_class_entry *scope = EG(active_op_array) ? EG(active_op_array)->scope : NULL;
fcc->calling_scope = *pce;
- if (scope && !fcc->object_pp && EG(This) &&
+ if (scope && !fcc->object_ptr && EG(This) &&
instanceof_function(Z_OBJCE_P(EG(This)), scope TSRMLS_CC) &&
instanceof_function(scope, fcc->calling_scope TSRMLS_CC)) {
- fcc->object_pp = &EG(This);
- fcc->called_scope = Z_OBJCE_PP(fcc->object_pp);
+ fcc->object_ptr = EG(This);
+ fcc->called_scope = Z_OBJCE_P(fcc->object_ptr);
} else {
- fcc->called_scope = fcc->object_pp ? Z_OBJCE_PP(fcc->object_pp) : fcc->calling_scope;
+ fcc->called_scope = fcc->object_ptr ? Z_OBJCE_P(fcc->object_ptr) : fcc->calling_scope;
}
ret = 1;
} else {
@@ -2480,9 +2480,9 @@ static int zend_is_callable_check_func(int check_flags, zval *callable, zend_fca
fcc->function_handler = priv_fbc;
}
}
- } else if (fcc->object_pp) {
- if (Z_OBJ_HT_PP(fcc->object_pp)->get_method) {
- fcc->function_handler = Z_OBJ_HT_PP(fcc->object_pp)->get_method(fcc->object_pp, mname, mlen TSRMLS_CC);
+ } else if (fcc->object_ptr) {
+ if (Z_OBJ_HT_P(fcc->object_ptr)->get_method) {
+ fcc->function_handler = Z_OBJ_HT_P(fcc->object_ptr)->get_method(&fcc->object_ptr, mname, mlen TSRMLS_CC);
retval = fcc->function_handler ? 1 : 0;
call_via_handler = 1;
}
@@ -2498,7 +2498,7 @@ static int zend_is_callable_check_func(int check_flags, zval *callable, zend_fca
if (retval) {
if (fcc->calling_scope && !call_via_handler) {
- if (!fcc->object_pp && !(fcc->function_handler->common.fn_flags & ZEND_ACC_STATIC)) {
+ if (!fcc->object_ptr && !(fcc->function_handler->common.fn_flags & ZEND_ACC_STATIC)) {
int severity;
char *verb;
if (fcc->function_handler->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
@@ -2513,7 +2513,7 @@ static int zend_is_callable_check_func(int check_flags, zval *callable, zend_fca
retval = 0;
}
if (EG(This) && instanceof_function(Z_OBJCE_P(EG(This)), fcc->calling_scope TSRMLS_CC)) {
- fcc->object_pp = &EG(This);
+ fcc->object_ptr = EG(This);
if (error) {
zend_spprintf(error, 0, "non-static method %s::%s() %s be called statically, assuming $this from compatible context %s", fcc->calling_scope->name, fcc->function_handler->common.function_name, verb, Z_OBJCE_P(EG(This))->name);
} else if (retval) {
@@ -2529,7 +2529,7 @@ static int zend_is_callable_check_func(int check_flags, zval *callable, zend_fca
}
if (retval && (check_flags & IS_CALLABLE_CHECK_NO_ACCESS) == 0) {
if (fcc->function_handler->op_array.fn_flags & ZEND_ACC_PRIVATE) {
- if (!zend_check_private(fcc->function_handler, fcc->object_pp ? Z_OBJCE_PP(fcc->object_pp) : EG(scope), lmname, mlen TSRMLS_CC)) {
+ if (!zend_check_private(fcc->function_handler, fcc->object_ptr ? Z_OBJCE_P(fcc->object_ptr) : EG(scope), lmname, mlen TSRMLS_CC)) {
if (error) {
if (*error) {
efree(*error);
@@ -2560,8 +2560,8 @@ static int zend_is_callable_check_func(int check_flags, zval *callable, zend_fca
}
efree(lmname);
- if (fcc->object_pp) {
- fcc->called_scope = Z_OBJCE_PP(fcc->object_pp);
+ if (fcc->object_ptr) {
+ fcc->called_scope = Z_OBJCE_P(fcc->object_ptr);
}
if (retval) {
fcc->initialized = 1;
@@ -2570,7 +2570,7 @@ static int zend_is_callable_check_func(int check_flags, zval *callable, zend_fca
}
/* }}} */
-ZEND_API zend_bool zend_is_callable_ex(zval *callable, zval **object_pp, uint check_flags, char **callable_name, int *callable_name_len, zend_fcall_info_cache *fcc, char **error TSRMLS_DC) /* {{{ */
+ZEND_API zend_bool zend_is_callable_ex(zval *callable, zval *object_ptr, uint check_flags, char **callable_name, int *callable_name_len, zend_fcall_info_cache *fcc, char **error TSRMLS_DC) /* {{{ */
{
zend_bool ret;
int callable_name_len_local;
@@ -2594,22 +2594,22 @@ ZEND_API zend_bool zend_is_callable_ex(zval *callable, zval **object_pp, uint ch
fcc->called_scope = NULL;
fcc->function_handler = NULL;
fcc->calling_scope = NULL;
- fcc->object_pp = NULL;
+ fcc->object_ptr = NULL;
- if (object_pp && (!*object_pp || Z_TYPE_PP(object_pp) != IS_OBJECT)) {
- object_pp = NULL;
+ if (object_ptr && Z_TYPE_P(object_ptr) != IS_OBJECT) {
+ object_ptr = NULL;
}
- if (object_pp &&
+ if (object_ptr &&
(!EG(objects_store).object_buckets ||
- !EG(objects_store).object_buckets[Z_OBJ_HANDLE_PP(object_pp)].valid)) {
+ !EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(object_ptr)].valid)) {
return 0;
}
switch (Z_TYPE_P(callable)) {
case IS_STRING:
- if (object_pp && *object_pp) {
- fcc->object_pp = object_pp;
- fcc->calling_scope = Z_OBJCE_PP(object_pp);
+ if (object_ptr) {
+ fcc->object_ptr = object_ptr;
+ fcc->calling_scope = Z_OBJCE_P(object_ptr);
if (callable_name) {
char *ptr;
@@ -2687,7 +2687,7 @@ ZEND_API zend_bool zend_is_callable_ex(zval *callable, zval **object_pp, uint ch
fcc->calling_scope = Z_OBJCE_PP(obj); /* TBFixed: what if it's overloaded? */
- fcc->object_pp = obj;
+ fcc->object_ptr = *obj;
if (callable_name) {
char *ptr;
@@ -2740,7 +2740,7 @@ ZEND_API zend_bool zend_is_callable_ex(zval *callable, zval **object_pp, uint ch
return 0;
case IS_OBJECT:
- if (Z_OBJ_HANDLER_P(callable, get_closure) && Z_OBJ_HANDLER_P(callable, get_closure)(callable, &fcc->calling_scope, &fcc->function_handler, NULL, &fcc->object_pp TSRMLS_CC) == SUCCESS) {
+ if (Z_OBJ_HANDLER_P(callable, get_closure) && Z_OBJ_HANDLER_P(callable, get_closure)(callable, &fcc->calling_scope, &fcc->function_handler, &fcc->object_ptr TSRMLS_CC) == SUCCESS) {
fcc->called_scope = fcc->calling_scope;
if (callable_name) {
zend_class_entry *ce = Z_OBJCE_P(callable); /* TBFixed: what if it's overloaded? */
@@ -2811,7 +2811,7 @@ ZEND_API int zend_fcall_info_init(zval *callable, uint check_flags, zend_fcall_i
fci->size = sizeof(*fci);
fci->function_table = fcc->calling_scope ? &fcc->calling_scope->function_table : EG(function_table);
- fci->object_pp = fcc->object_pp;
+ fci->object_ptr = fcc->object_ptr;
fci->function_name = callable;
fci->retval_ptr_ptr = NULL;
fci->param_count = 0;
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index 5416619d83..2249f98e8b 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -48,7 +48,7 @@ typedef struct _zend_fcall_info {
zval **retval_ptr_ptr;
zend_uint param_count;
zval ***params;
- zval **object_pp;
+ zval *object_ptr;
zend_bool no_separation;
} zend_fcall_info;
@@ -57,7 +57,7 @@ typedef struct _zend_fcall_info_cache {
zend_function *function_handler;
zend_class_entry *calling_scope;
zend_class_entry *called_scope;
- zval **object_pp;
+ zval *object_ptr;
} zend_fcall_info_cache;
#define ZEND_NS_NAME(ns, name) ns"\\"name
@@ -277,7 +277,7 @@ ZEND_API void zend_wrong_param_count(TSRMLS_D);
#define IS_CALLABLE_STRICT (IS_CALLABLE_CHECK_IS_STATIC)
-ZEND_API zend_bool zend_is_callable_ex(zval *callable, zval **object_pp, uint check_flags, char **callable_name, int *callable_name_len, zend_fcall_info_cache *fcc, char **error TSRMLS_DC);
+ZEND_API zend_bool zend_is_callable_ex(zval *callable, zval *object_ptr, uint check_flags, char **callable_name, int *callable_name_len, zend_fcall_info_cache *fcc, char **error TSRMLS_DC);
ZEND_API zend_bool zend_is_callable(zval *callable, uint check_flags, char **callable_name TSRMLS_DC);
ZEND_API zend_bool zend_make_callable(zval *callable, char **callable_name TSRMLS_DC);
ZEND_API const char *zend_get_module_version(const char *module_name);
diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c
index 69b964aba9..b5f7e0ea0e 100644
--- a/Zend/zend_closures.c
+++ b/Zend/zend_closures.c
@@ -209,7 +209,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, zval ***zobj_ptr_ptr TSRMLS_DC) /* {{{ */
+int zend_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC) /* {{{ */
{
zend_closure *closure;
@@ -224,17 +224,11 @@ 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;
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c
index 2e66a91812..564c653474 100644
--- a/Zend/zend_exceptions.c
+++ b/Zend/zend_exceptions.c
@@ -551,7 +551,7 @@ ZEND_METHOD(exception, __toString)
fci.function_table = &Z_OBJCE_P(exception)->function_table;
fci.function_name = &fname;
fci.symbol_table = NULL;
- fci.object_pp = &exception;
+ fci.object_ptr = exception;
fci.retval_ptr_ptr = &trace;
fci.param_count = 0;
fci.params = NULL;
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index ed6dc162a1..f356b8d910 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -715,7 +715,7 @@ int call_user_function_ex(HashTable *function_table, zval **object_pp, zval *fun
fci.size = sizeof(fci);
fci.function_table = function_table;
- fci.object_pp = object_pp;
+ fci.object_ptr = object_pp ? *object_pp : NULL;
fci.function_name = function_name;
fci.retval_ptr_ptr = retval_ptr_ptr;
fci.param_count = param_count;
@@ -782,7 +782,7 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
fci_cache = &fci_cache_local;
}
- if (!zend_is_callable_ex(fci->function_name, fci->object_pp, IS_CALLABLE_CHECK_SILENT, &callable_name, NULL, fci_cache, &error TSRMLS_CC)) {
+ if (!zend_is_callable_ex(fci->function_name, fci->object_ptr, IS_CALLABLE_CHECK_SILENT, &callable_name, NULL, fci_cache, &error TSRMLS_CC)) {
if (error) {
zend_error(E_WARNING, "Invalid callback %s, %s", callable_name, error);
efree(error);
@@ -805,10 +805,10 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
EX(function_state).function = fci_cache->function_handler;
calling_scope = fci_cache->calling_scope;
called_scope = fci_cache->called_scope;
- fci->object_pp = fci_cache->object_pp;
- EX(object) = fci->object_pp ? *fci->object_pp : NULL;
- if (fci->object_pp && *fci->object_pp && Z_TYPE_PP(fci->object_pp) == IS_OBJECT &&
- (!EG(objects_store).object_buckets || !EG(objects_store).object_buckets[Z_OBJ_HANDLE_PP(fci->object_pp)].valid)) {
+ fci->object_ptr = fci_cache->object_ptr;
+ EX(object) = fci->object_ptr;
+ if (fci->object_ptr && Z_TYPE_P(fci->object_ptr) == IS_OBJECT &&
+ (!EG(objects_store).object_buckets || !EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(fci->object_ptr)].valid)) {
return FAILURE;
}
@@ -886,11 +886,11 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
EG(called_scope) = NULL;
}
- if (fci->object_pp) {
+ if (fci->object_ptr) {
if ((EX(function_state).function->common.fn_flags & ZEND_ACC_STATIC)) {
EG(This) = NULL;
} else {
- EG(This) = *fci->object_pp;
+ EG(This) = fci->object_ptr;
if (!PZVAL_IS_REF(EG(This))) {
Z_ADDREF_P(EG(This)); /* For $this pointer */
@@ -947,7 +947,7 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
if (EX(function_state).function->common.scope) {
EG(scope) = EX(function_state).function->common.scope;
}
- ((zend_internal_function *) EX(function_state).function)->handler(fci->param_count, *fci->retval_ptr_ptr, fci->retval_ptr_ptr, (fci->object_pp?*fci->object_pp:NULL), 1 TSRMLS_CC);
+ ((zend_internal_function *) EX(function_state).function)->handler(fci->param_count, *fci->retval_ptr_ptr, fci->retval_ptr_ptr, fci->object_ptr, 1 TSRMLS_CC);
/* We shouldn't fix bad extensions here,
because it can break proper ones (Bug #34045)
if (!EX(function_state).function->common.return_reference)
@@ -967,8 +967,8 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
ALLOC_INIT_ZVAL(*fci->retval_ptr_ptr);
/* Not sure what should be done here if it's a static method */
- if (fci->object_pp) {
- Z_OBJ_HT_PP(fci->object_pp)->call_method(EX(function_state).function->common.function_name, fci->param_count, *fci->retval_ptr_ptr, fci->retval_ptr_ptr, *fci->object_pp, 1 TSRMLS_CC);
+ if (fci->object_ptr) {
+ Z_OBJ_HT_P(fci->object_ptr)->call_method(EX(function_state).function->common.function_name, fci->param_count, *fci->retval_ptr_ptr, fci->retval_ptr_ptr, fci->object_ptr, 1 TSRMLS_CC);
} else {
zend_error_noreturn(E_ERROR, "Cannot call overloaded function for non-object");
}
@@ -1065,14 +1065,14 @@ ZEND_API int zend_lookup_class_ex(const char *name, int name_length, int use_aut
fcall_info.retval_ptr_ptr = &retval_ptr;
fcall_info.param_count = 1;
fcall_info.params = args;
- fcall_info.object_pp = NULL;
+ fcall_info.object_ptr = NULL;
fcall_info.no_separation = 1;
fcall_cache.initialized = EG(autoload_func) ? 1 : 0;
fcall_cache.function_handler = EG(autoload_func);
fcall_cache.calling_scope = NULL;
fcall_cache.called_scope = NULL;
- fcall_cache.object_pp = NULL;
+ fcall_cache.object_ptr = NULL;
zend_exception_save(TSRMLS_C);
retval = zend_call_function(&fcall_info, &fcall_cache TSRMLS_CC);
diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c
index e744ff413a..b4edac5aee 100755
--- a/Zend/zend_interfaces.c
+++ b/Zend/zend_interfaces.c
@@ -46,7 +46,7 @@ ZEND_API zval* zend_call_method(zval **object_pp, zend_class_entry *obj_ce, zend
fci.size = sizeof(fci);
/*fci.function_table = NULL; will be read form zend_class_entry of object if needed */
- fci.object_pp = object_pp;
+ fci.object_ptr = object_pp ? *object_pp : NULL;
fci.function_name = &z_fname;
fci.retval_ptr_ptr = retval_ptr_ptr ? retval_ptr_ptr : &retval;
fci.param_count = param_count;
@@ -85,7 +85,7 @@ ZEND_API zval* zend_call_method(zval **object_pp, zend_class_entry *obj_ce, zend
}
fcic.calling_scope = obj_ce;
fcic.called_scope = object_pp ? obj_ce : EG(called_scope);
- fcic.object_pp = object_pp;
+ fcic.object_ptr = object_pp ? *object_pp : NULL;
result = zend_call_function(&fci, &fcic TSRMLS_CC);
}
if (result == FAILURE) {
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index 57839ff50c..0c0a4522a9 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -1270,7 +1270,7 @@ ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int ty
}
/* }}} */
-int zend_std_get_closure(zval *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval **zobj_ptr, zval ***zobj_ptr_ptr TSRMLS_DC) /* {{{ */
+int zend_std_get_closure(zval *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC) /* {{{ */
{
zend_class_entry *ce;
if (Z_TYPE_P(obj) != IS_OBJECT) {
@@ -1288,16 +1288,10 @@ int zend_std_get_closure(zval *obj, zend_class_entry **ce_ptr, zend_function **f
if (zobj_ptr) {
*zobj_ptr = NULL;
}
- if (zobj_ptr_ptr) {
- *zobj_ptr_ptr = NULL;
- }
} else {
if (zobj_ptr) {
*zobj_ptr = obj;
}
- if (zobj_ptr_ptr) {
- *zobj_ptr_ptr = NULL;
- }
}
return SUCCESS;
}
diff --git a/Zend/zend_object_handlers.h b/Zend/zend_object_handlers.h
index 0d8a46b1bf..ed8c750345 100644
--- a/Zend/zend_object_handlers.h
+++ b/Zend/zend_object_handlers.h
@@ -108,7 +108,7 @@ typedef int (*zend_object_cast_t)(zval *readobj, zval *retval, int type TSRMLS_D
* Returns FAILURE if the object does not have any sense of overloaded dimensions */
typedef int (*zend_object_count_elements_t)(zval *object, long *count TSRMLS_DC);
-typedef int (*zend_object_get_closure_t)(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr, zval ***zobj_ptr_ptr TSRMLS_DC);
+typedef int (*zend_object_get_closure_t)(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC);
struct _zend_object_handlers {
/* general object functions */
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index afb5d897f9..d8387fcb4f 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -2067,7 +2067,7 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV)
if (Z_TYPE_P(function_name) == IS_OBJECT &&
Z_OBJ_HANDLER_P(function_name, get_closure) &&
- Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object), NULL TSRMLS_CC) == SUCCESS) {
+ Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) {
if (EX(object)) {
Z_ADDREF_P(EX(object));
}
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 5aed0ef12c..abcd410a3e 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -749,7 +749,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE
if (Z_TYPE_P(function_name) == IS_OBJECT &&
Z_OBJ_HANDLER_P(function_name, get_closure) &&
- Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object), NULL TSRMLS_CC) == SUCCESS) {
+ Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) {
if (EX(object)) {
Z_ADDREF_P(EX(object));
}
@@ -946,7 +946,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H
if (Z_TYPE_P(function_name) == IS_OBJECT &&
Z_OBJ_HANDLER_P(function_name, get_closure) &&
- Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object), NULL TSRMLS_CC) == SUCCESS) {
+ Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) {
if (EX(object)) {
Z_ADDREF_P(EX(object));
}
@@ -1051,7 +1051,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H
if (Z_TYPE_P(function_name) == IS_OBJECT &&
Z_OBJ_HANDLER_P(function_name, get_closure) &&
- Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object), NULL TSRMLS_CC) == SUCCESS) {
+ Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) {
if (EX(object)) {
Z_ADDREF_P(EX(object));
}
@@ -1184,7 +1184,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA
if (Z_TYPE_P(function_name) == IS_OBJECT &&
Z_OBJ_HANDLER_P(function_name, get_closure) &&
- Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object), NULL TSRMLS_CC) == SUCCESS) {
+ Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) {
if (EX(object)) {
Z_ADDREF_P(EX(object));
}
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index 982748092f..c1a55c17b5 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -850,7 +850,7 @@ static size_t curl_write(char *data, size_t size, size_t nmemb, void *ctx)
fci.size = sizeof(fci);
fci.function_table = EG(function_table);
- fci.object_pp = NULL;
+ fci.object_ptr = NULL;
fci.function_name = t->func_name;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = 2;
@@ -923,7 +923,7 @@ static size_t curl_read(char *data, size_t size, size_t nmemb, void *ctx)
fci.size = sizeof(fci);
fci.function_table = EG(function_table);
fci.function_name = t->func_name;
- fci.object_pp = NULL;
+ fci.object_ptr = NULL;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = 3;
fci.params = argv;
@@ -1000,7 +1000,7 @@ static size_t curl_write_header(char *data, size_t size, size_t nmemb, void *ctx
fci.function_table = EG(function_table);
fci.function_name = t->func_name;
fci.symbol_table = NULL;
- fci.object_pp = NULL;
+ fci.object_ptr = NULL;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = 2;
fci.params = argv;
diff --git a/ext/dom/xpath.c b/ext/dom/xpath.c
index beab4d70e9..8f27782ff1 100644
--- a/ext/dom/xpath.c
+++ b/ext/dom/xpath.c
@@ -197,7 +197,7 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs,
fci.function_name = &handler;
fci.symbol_table = NULL;
- fci.object_pp = NULL;
+ fci.object_ptr = NULL;
fci.retval_ptr_ptr = &retval;
fci.no_separation = 0;
diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c
index faea8d118f..ffd2b67baa 100644
--- a/ext/mysql/php_mysql.c
+++ b/ext/mysql/php_mysql.c
@@ -2199,7 +2199,7 @@ static void php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type,
fci.function_table = &ce->function_table;
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = &return_value;
+ fci.object_ptr = return_value;
fci.retval_ptr_ptr = &retval_ptr;
if (ctor_params && Z_TYPE_P(ctor_params) != IS_NULL) {
if (Z_TYPE_P(ctor_params) == IS_ARRAY) {
@@ -2233,7 +2233,7 @@ static void php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type,
fcc.function_handler = ce->constructor;
fcc.calling_scope = EG(scope);
fcc.called_scope = Z_OBJCE_P(return_value);
- fcc.object_pp = &return_value;
+ fcc.object_ptr = return_value;
if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
zend_throw_exception_ex(zend_exception_get_default(TSRMLS_C), 0 TSRMLS_CC, "Could not execute %s::%s()", ce->name, ce->constructor->common.function_name);
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index 0fb22a0035..9309545d06 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -1275,7 +1275,7 @@ void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flags
fci.function_table = &ce->function_table;
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = &return_value;
+ fci.object_ptr = return_value;
fci.retval_ptr_ptr = &retval_ptr;
if (ctor_params && Z_TYPE_P(ctor_params) != IS_NULL) {
if (Z_TYPE_P(ctor_params) == IS_ARRAY) {
@@ -1309,7 +1309,7 @@ void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flags
fcc.function_handler = ce->constructor;
fcc.calling_scope = EG(scope);
fcc.called_scope = Z_OBJCE_P(return_value);
- fcc.object_pp = &return_value;
+ fcc.object_ptr = return_value;
if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
zend_throw_exception_ex(zend_exception_get_default(TSRMLS_C), 0 TSRMLS_CC, "Could not execute %s::%s()", ce->name, ce->constructor->common.function_name);
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c
index 7821b98f22..0829d26782 100755
--- a/ext/pdo/pdo_dbh.c
+++ b/ext/pdo/pdo_dbh.c
@@ -454,7 +454,7 @@ static void pdo_stmt_construct(pdo_stmt_t *stmt, zval *object, zend_class_entry
fci.size = sizeof(zend_fcall_info);
fci.function_table = &dbstmt_ce->function_table;
fci.function_name = NULL;
- fci.object_pp = &object;
+ fci.object_ptr = object;
fci.symbol_table = NULL;
fci.retval_ptr_ptr = &retval;
if (ctor_args) {
@@ -478,7 +478,7 @@ static void pdo_stmt_construct(pdo_stmt_t *stmt, zval *object, zend_class_entry
fcc.function_handler = dbstmt_ce->constructor;
fcc.calling_scope = EG(scope);
fcc.called_scope = Z_OBJCE_P(object);
- fcc.object_pp = &object;
+ fcc.object_ptr = object;
if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
zval_dtor(object);
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c
index 9e88029619..f5b26555ea 100755
--- a/ext/pdo/pdo_stmt.c
+++ b/ext/pdo/pdo_stmt.c
@@ -786,7 +786,7 @@ static int do_fetch_class_prepare(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
static int make_callable_ex(pdo_stmt_t *stmt, zval *callable, zend_fcall_info * fci, zend_fcall_info_cache * fcc, int num_args TSRMLS_DC) /* {{{ */
{
- zval **object = NULL, **method = NULL;
+ zval *object = NULL, **method = NULL;
char *fname = NULL, *cname;
zend_class_entry * ce = NULL, **pce;
zend_function *function_handler;
@@ -796,19 +796,19 @@ static int make_callable_ex(pdo_stmt_t *stmt, zval *callable, zend_fcall_info *
pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied function must be a valid callback" TSRMLS_CC);
return 0;
}
- object = (zval**)Z_ARRVAL_P(callable)->pListHead->pData;
+ object = *(zval**)Z_ARRVAL_P(callable)->pListHead->pData;
method = (zval**)Z_ARRVAL_P(callable)->pListHead->pListNext->pData;
- if (Z_TYPE_PP(object) == IS_STRING) { /* static call */
- if (zend_lookup_class(Z_STRVAL_PP(object), Z_STRLEN_PP(object), &pce TSRMLS_CC) == FAILURE) {
+ if (Z_TYPE_P(object) == IS_STRING) { /* static call */
+ if (zend_lookup_class(Z_STRVAL_P(object), Z_STRLEN_P(object), &pce TSRMLS_CC) == FAILURE) {
pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied class does not exist" TSRMLS_CC);
return 0;
} else {
ce = *pce;
}
object = NULL;
- } else if (Z_TYPE_PP(object) == IS_OBJECT) { /* object call */
- ce = Z_OBJCE_PP(object);
+ } else if (Z_TYPE_P(object) == IS_OBJECT) { /* object call */
+ ce = Z_OBJCE_P(object);
} else {
pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "user-supplied function must be a valid callback; bogus object/class name" TSRMLS_CC);
return 0;
@@ -868,13 +868,13 @@ static int make_callable_ex(pdo_stmt_t *stmt, zval *callable, zend_fcall_info *
fci->symbol_table = NULL;
fci->param_count = num_args; /* probably less */
fci->params = safe_emalloc(sizeof(zval**), num_args, 0);
- fci->object_pp = object;
+ fci->object_ptr = object;
fcc->initialized = 1;
fcc->function_handler = function_handler;
fcc->calling_scope = EG(scope);
- fcc->called_scope = object ? Z_OBJCE_PP(object) : NULL;
- fcc->object_pp = object;
+ fcc->called_scope = object ? Z_OBJCE_P(object) : NULL;
+ fcc->object_ptr = object;
return 1;
}
@@ -1042,8 +1042,8 @@ static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value,
}
}
if (ce->constructor && (flags & PDO_FETCH_PROPS_LATE)) {
- stmt->fetch.cls.fci.object_pp = &return_value;
- stmt->fetch.cls.fcc.object_pp = &return_value;
+ stmt->fetch.cls.fci.object_ptr = return_value;
+ stmt->fetch.cls.fcc.object_ptr = return_value;
if (zend_call_function(&stmt->fetch.cls.fci, &stmt->fetch.cls.fcc TSRMLS_CC) == FAILURE) {
pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "could not call class constructor" TSRMLS_CC);
return 0;
@@ -1242,8 +1242,8 @@ static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value,
switch (how) {
case PDO_FETCH_CLASS:
if (ce->constructor && !(flags & PDO_FETCH_PROPS_LATE)) {
- stmt->fetch.cls.fci.object_pp = &return_value;
- stmt->fetch.cls.fcc.object_pp = &return_value;
+ stmt->fetch.cls.fci.object_ptr = return_value;
+ stmt->fetch.cls.fcc.object_ptr = return_value;
if (zend_call_function(&stmt->fetch.cls.fci, &stmt->fetch.cls.fcc TSRMLS_CC) == FAILURE) {
pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "could not call class constructor" TSRMLS_CC);
return 0;
diff --git a/ext/pdo_sqlite/sqlite_driver.c b/ext/pdo_sqlite/sqlite_driver.c
index 9e4b4c4794..b03a8bcbdd 100644
--- a/ext/pdo_sqlite/sqlite_driver.c
+++ b/ext/pdo_sqlite/sqlite_driver.c
@@ -308,7 +308,7 @@ static int do_callback(struct pdo_sqlite_fci *fc, zval *cb,
fc->fci.function_table = EG(function_table);
fc->fci.function_name = cb;
fc->fci.symbol_table = NULL;
- fc->fci.object_pp = NULL;
+ fc->fci.object_ptr = NULL;
fc->fci.retval_ptr_ptr = &retval;
fc->fci.param_count = fake_argc;
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index 34781e6fc6..d9caf6c964 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -2529,7 +2529,7 @@ static void php_pgsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, long result_type,
fci.function_table = &ce->function_table;
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = &return_value;
+ fci.object_ptr = return_value;
fci.retval_ptr_ptr = &retval_ptr;
if (ctor_params && Z_TYPE_P(ctor_params) != IS_NULL) {
if (Z_TYPE_P(ctor_params) == IS_ARRAY) {
@@ -2563,7 +2563,7 @@ static void php_pgsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, long result_type,
fcc.function_handler = ce->constructor;
fcc.calling_scope = EG(scope);
fcc.called_scope = Z_OBJCE_P(return_value);
- fcc.object_pp = &return_value;
+ fcc.object_ptr = return_value;
if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
zend_throw_exception_ex(zend_exception_get_default(TSRMLS_C), 0 TSRMLS_CC, "Could not execute %s::%s()", ce->name, ce->constructor->common.function_name);
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 7461c627ac..ccb21b9e23 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -1275,7 +1275,7 @@ static void _reflection_export(INTERNAL_FUNCTION_PARAMETERS, zend_class_entry *c
fci.function_table = NULL;
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = &reflector_ptr;
+ fci.object_ptr = reflector_ptr;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = ctor_argc;
fci.params = params;
@@ -1285,7 +1285,7 @@ static void _reflection_export(INTERNAL_FUNCTION_PARAMETERS, zend_class_entry *c
fcc.function_handler = ce_ptr->constructor;
fcc.calling_scope = ce_ptr;
fcc.called_scope = Z_OBJCE_P(reflector_ptr);
- fcc.object_pp = &reflector_ptr;
+ fcc.object_ptr = reflector_ptr;
result = zend_call_function(&fci, &fcc TSRMLS_CC);
@@ -1310,7 +1310,7 @@ static void _reflection_export(INTERNAL_FUNCTION_PARAMETERS, zend_class_entry *c
ZVAL_STRINGL(&fname, "reflection::export", sizeof("reflection::export") - 1, 0);
fci.function_table = &reflection_ptr->function_table;
fci.function_name = &fname;
- fci.object_pp = NULL;
+ fci.object_ptr = NULL;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = 2;
fci.params = params;
@@ -1653,7 +1653,7 @@ ZEND_METHOD(reflection_function, invoke)
fci.function_table = NULL;
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = NULL;
+ fci.object_ptr = NULL;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = num_args;
fci.params = params;
@@ -1663,7 +1663,7 @@ ZEND_METHOD(reflection_function, invoke)
fcc.function_handler = fptr;
fcc.calling_scope = EG(scope);
fcc.called_scope = NULL;
- fcc.object_pp = NULL;
+ fcc.object_ptr = NULL;
result = zend_call_function(&fci, &fcc TSRMLS_CC);
@@ -1718,7 +1718,7 @@ ZEND_METHOD(reflection_function, invokeArgs)
fci.function_table = NULL;
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = NULL;
+ fci.object_ptr = NULL;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = argc;
fci.params = params;
@@ -1728,7 +1728,7 @@ ZEND_METHOD(reflection_function, invokeArgs)
fcc.function_handler = fptr;
fcc.calling_scope = EG(scope);
fcc.called_scope = NULL;
- fcc.object_pp = NULL;
+ fcc.object_ptr = NULL;
result = zend_call_function(&fci, &fcc TSRMLS_CC);
@@ -2448,7 +2448,7 @@ ZEND_METHOD(reflection_method, invoke)
{
zval *retval_ptr;
zval ***params = NULL;
- zval **object_pp;
+ zval *object_ptr;
reflection_object *intern;
zend_function *mptr;
int result, num_args = 0;
@@ -2481,14 +2481,14 @@ ZEND_METHOD(reflection_method, invoke)
return;
}
- /* In case this is a static method, we should'nt pass an object_pp
+ /* In case this is a static method, we should'nt pass an object_ptr
* (which is used as calling context aka $this). We can thus ignore the
* first parameter.
*
* Else, we verify that the given object is an instance of the class.
*/
if (mptr->common.fn_flags & ZEND_ACC_STATIC) {
- object_pp = NULL;
+ object_ptr = NULL;
obj_ce = mptr->common.scope;
} else {
if (Z_TYPE_PP(params[0]) != IS_OBJECT) {
@@ -2507,14 +2507,14 @@ ZEND_METHOD(reflection_method, invoke)
/* Returns from this function */
}
- object_pp = params[0];
+ object_ptr = *params[0];
}
fci.size = sizeof(fci);
fci.function_table = NULL;
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = object_pp;
+ fci.object_ptr = object_ptr;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = num_args - 1;
fci.params = params + 1;
@@ -2524,7 +2524,7 @@ ZEND_METHOD(reflection_method, invoke)
fcc.function_handler = mptr;
fcc.calling_scope = obj_ce;
fcc.called_scope = obj_ce;
- fcc.object_pp = object_pp;
+ fcc.object_ptr = object_ptr;
result = zend_call_function(&fci, &fcc TSRMLS_CC);
@@ -2591,7 +2591,7 @@ ZEND_METHOD(reflection_method, invokeArgs)
zend_hash_apply_with_argument(Z_ARRVAL_P(param_array), (apply_func_arg_t)_zval_array_to_c_array, &params TSRMLS_CC);
params -= argc;
- /* In case this is a static method, we should'nt pass an object_pp
+ /* In case this is a static method, we should'nt pass an object_ptr
* (which is used as calling context aka $this). We can thus ignore the
* first parameter.
*
@@ -2622,7 +2622,7 @@ ZEND_METHOD(reflection_method, invokeArgs)
fci.function_table = NULL;
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = &object;
+ fci.object_ptr = object;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = argc;
fci.params = params;
@@ -2632,7 +2632,7 @@ ZEND_METHOD(reflection_method, invokeArgs)
fcc.function_handler = mptr;
fcc.calling_scope = obj_ce;
fcc.called_scope = obj_ce;
- fcc.object_pp = object ? &object : NULL;
+ fcc.object_ptr = object;
result = zend_call_function(&fci, &fcc TSRMLS_CC);
@@ -3701,7 +3701,7 @@ ZEND_METHOD(reflection_class, newInstance)
fci.function_table = EG(function_table);
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = &return_value;
+ fci.object_ptr = return_value;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = num_args;
fci.params = params;
@@ -3711,7 +3711,7 @@ ZEND_METHOD(reflection_class, newInstance)
fcc.function_handler = ce->constructor;
fcc.calling_scope = EG(scope);
fcc.called_scope = Z_OBJCE_P(return_value);
- fcc.object_pp = &return_value;
+ fcc.object_ptr = return_value;
if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
if (params) {
@@ -3781,7 +3781,7 @@ ZEND_METHOD(reflection_class, newInstanceArgs)
fci.function_table = EG(function_table);
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = &return_value;
+ fci.object_ptr = return_value;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = argc;
fci.params = params;
@@ -3791,7 +3791,7 @@ ZEND_METHOD(reflection_class, newInstanceArgs)
fcc.function_handler = ce->constructor;
fcc.calling_scope = EG(scope);
fcc.called_scope = Z_OBJCE_P(return_value);
- fcc.object_pp = &return_value;
+ fcc.object_ptr = return_value;
if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
if (params) {
diff --git a/ext/soap/soap.c b/ext/soap/soap.c
index 09faf2345a..78f4326e4e 100644
--- a/ext/soap/soap.c
+++ b/ext/soap/soap.c
@@ -999,7 +999,7 @@ PHP_METHOD(SoapFault, __toString)
fci.function_table = &Z_OBJCE_P(getThis())->function_table;
fci.function_name = &fname;
fci.symbol_table = NULL;
- fci.object_pp = &getThis();
+ fci.object_ptr = getThis();
fci.retval_ptr_ptr = &trace;
fci.param_count = 0;
fci.params = NULL;
diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c
index 36f1f49296..26794e4732 100755
--- a/ext/spl/php_spl.c
+++ b/ext/spl/php_spl.c
@@ -424,7 +424,7 @@ PHP_FUNCTION(spl_autoload_register)
zend_bool prepend = 0;
zend_function *spl_func_ptr;
autoload_func_info alfi;
- zval **obj_ptr;
+ zval *obj_ptr;
zend_fcall_info_cache fcc;
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "|zbb", &zcallable, &do_throw, &prepend) == FAILURE) {
@@ -446,7 +446,7 @@ PHP_FUNCTION(spl_autoload_register)
if (!zend_is_callable_ex(zcallable, NULL, IS_CALLABLE_STRICT, &func_name, &func_name_len, &fcc, &error TSRMLS_CC)) {
alfi.ce = fcc.calling_scope;
alfi.func_ptr = fcc.function_handler;
- obj_ptr = fcc.object_pp;
+ obj_ptr = fcc.object_ptr;
if (Z_TYPE_P(zcallable) == IS_ARRAY) {
if (!obj_ptr && alfi.func_ptr && !(alfi.func_ptr->common.fn_flags & ZEND_ACC_STATIC)) {
if (do_throw) {
@@ -488,7 +488,7 @@ PHP_FUNCTION(spl_autoload_register)
}
alfi.ce = fcc.calling_scope;
alfi.func_ptr = fcc.function_handler;
- obj_ptr = fcc.object_pp;
+ obj_ptr = fcc.object_ptr;
if (error) {
efree(error);
}
@@ -503,10 +503,10 @@ PHP_FUNCTION(spl_autoload_register)
if (obj_ptr && !(alfi.func_ptr->common.fn_flags & ZEND_ACC_STATIC)) {
/* add object id to the hash to ensure uniqueness, for more reference look at bug #40091 */
- memcpy(lc_name + func_name_len, &Z_OBJ_HANDLE_PP(obj_ptr), sizeof(zend_object_handle));
+ memcpy(lc_name + func_name_len, &Z_OBJ_HANDLE_P(obj_ptr), sizeof(zend_object_handle));
func_name_len += sizeof(zend_object_handle);
lc_name[func_name_len] = '\0';
- alfi.obj = *obj_ptr;
+ alfi.obj = obj_ptr;
Z_ADDREF_P(alfi.obj);
} else {
alfi.obj = NULL;
@@ -558,7 +558,7 @@ PHP_FUNCTION(spl_autoload_unregister)
zval *zcallable;
int success = FAILURE;
zend_function *spl_func_ptr;
- zval **obj_ptr;
+ zval *obj_ptr;
zend_fcall_info_cache fcc;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &zcallable) == FAILURE) {
@@ -575,7 +575,7 @@ PHP_FUNCTION(spl_autoload_unregister)
}
RETURN_FALSE;
}
- obj_ptr = fcc.object_pp;
+ obj_ptr = fcc.object_ptr;
if (error) {
efree(error);
}
@@ -595,7 +595,7 @@ PHP_FUNCTION(spl_autoload_unregister)
success = zend_hash_del(SPL_G(autoload_functions), func_name, func_name_len+1);
if (success != SUCCESS && obj_ptr) {
func_name = erealloc(func_name, func_name_len + 1 + sizeof(zend_object_handle));
- memcpy(func_name + func_name_len, &Z_OBJ_HANDLE_PP(obj_ptr), sizeof(zend_object_handle));
+ memcpy(func_name + func_name_len, &Z_OBJ_HANDLE_P(obj_ptr), sizeof(zend_object_handle));
func_name_len += sizeof(zend_object_handle);
func_name[func_name_len] = '\0';
success = zend_hash_del(SPL_G(autoload_functions), func_name, func_name_len+1);
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c
index 30daea7337..44921de279 100755
--- a/ext/spl/spl_directory.c
+++ b/ext/spl/spl_directory.c
@@ -1805,7 +1805,7 @@ static int spl_filesystem_file_call(spl_filesystem_object *intern, zend_function
fci.size = sizeof(fci);
fci.function_table = EG(function_table);
- fci.object_pp = NULL;
+ fci.object_ptr = NULL;
fci.function_name = &z_fname;
fci.retval_ptr_ptr = &retval;
fci.param_count = num_args;
@@ -1817,7 +1817,7 @@ static int spl_filesystem_file_call(spl_filesystem_object *intern, zend_function
fcic.function_handler = func_ptr;
fcic.calling_scope = NULL;
fcic.called_scope = NULL;
- fcic.object_pp = NULL;
+ fcic.object_ptr = NULL;
result = zend_call_function(&fci, &fcic TSRMLS_CC);
diff --git a/ext/sqlite/sqlite.c b/ext/sqlite/sqlite.c
index 20bb460bde..efc17af9b7 100644
--- a/ext/sqlite/sqlite.c
+++ b/ext/sqlite/sqlite.c
@@ -2415,7 +2415,7 @@ PHP_FUNCTION(sqlite_fetch_object)
fci.function_table = &ce->function_table;
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = &return_value;
+ fci.object_ptr = return_value;
fci.retval_ptr_ptr = &retval_ptr;
if (ctor_params && Z_TYPE_P(ctor_params) != IS_NULL) {
if (Z_TYPE_P(ctor_params) == IS_ARRAY) {
@@ -2449,7 +2449,7 @@ PHP_FUNCTION(sqlite_fetch_object)
fcc.function_handler = ce->constructor;
fcc.calling_scope = EG(scope);
fcc.called_scope = Z_OBJCE_P(return_value);
- fcc.object_pp = &return_value;
+ fcc.object_ptr = return_value;
if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
zend_throw_exception_ex(sqlite_ce_exception, 0 TSRMLS_CC, "Could not execute %s::%s()", class_name, ce->constructor->common.function_name);
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c
index a5c4954bea..8d4f229816 100644
--- a/ext/sqlite3/sqlite3.c
+++ b/ext/sqlite3/sqlite3.c
@@ -608,7 +608,7 @@ static int sqlite3_do_callback(struct php_sqlite3_fci *fc, zval *cb, int argc, s
fc->fci.function_table = EG(function_table);
fc->fci.function_name = cb;
fc->fci.symbol_table = NULL;
- fc->fci.object_pp = NULL;
+ fc->fci.object_ptr = NULL;
fc->fci.retval_ptr_ptr = &retval;
fc->fci.param_count = fake_argc;
diff --git a/ext/xml/xml.c b/ext/xml/xml.c
index e7e25b3245..db82e2a093 100644
--- a/ext/xml/xml.c
+++ b/ext/xml/xml.c
@@ -520,7 +520,7 @@ static zval *xml_call_handler(xml_parser *parser, zval *handler, zend_function *
fci.function_table = EG(function_table);
fci.function_name = handler;
fci.symbol_table = NULL;
- fci.object_pp = &parser->object;
+ fci.object_ptr = parser->object;
fci.retval_ptr_ptr = &retval;
fci.param_count = argc;
fci.params = args;
diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c
index 95a3ede126..46b9d720ac 100644
--- a/ext/xsl/xsltprocessor.c
+++ b/ext/xsl/xsltprocessor.c
@@ -306,7 +306,7 @@ static void xsl_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, int t
fci.function_name = &handler;
fci.symbol_table = NULL;
- fci.object_pp = NULL;
+ fci.object_ptr = NULL;
fci.retval_ptr_ptr = &retval;
fci.no_separation = 0;
/*fci.function_handler_cache = &function_ptr;*/
diff --git a/main/streams/userspace.c b/main/streams/userspace.c
index 5d56cfb5a3..bfef46f520 100644
--- a/main/streams/userspace.c
+++ b/main/streams/userspace.c
@@ -299,7 +299,7 @@ static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, char *filena
fci.function_table = &uwrap->ce->function_table;
fci.function_name = NULL;
fci.symbol_table = NULL;
- fci.object_pp = &us->object;
+ fci.object_ptr = us->object;
fci.retval_ptr_ptr = &retval_ptr;
fci.param_count = 0;
fci.params = NULL;
@@ -309,7 +309,7 @@ static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, char *filena
fcc.function_handler = uwrap->ce->constructor;
fcc.calling_scope = EG(scope);
fcc.called_scope = Z_OBJCE_P(us->object);
- fcc.object_pp = &us->object;
+ fcc.object_ptr = us->object;
if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not execute %s::%s()", uwrap->ce->name, uwrap->ce->constructor->common.function_name);