mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
- Pass TSRMLS to callbacks.
This commit is contained in:
parent
db84afb206
commit
c84a4ead95
5 changed files with 29 additions and 25 deletions
|
@ -2538,7 +2538,7 @@ send_by_ref:
|
|||
|
||||
EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = &EX(Ts)[EX(opline)->result.u.var].var.ptr;
|
||||
ALLOC_ZVAL(EX(Ts)[EX(opline)->result.u.var].var.ptr);
|
||||
EX(Ts)[EX(opline)->result.u.var].var.ptr->value.obj = Z_OBJ_HT_P(obj)->clone_obj(obj);
|
||||
EX(Ts)[EX(opline)->result.u.var].var.ptr->value.obj = Z_OBJ_HT_P(obj)->clone_obj(obj TSRMLS_CC);
|
||||
EX(Ts)[EX(opline)->result.u.var].var.ptr->type = IS_OBJECT;
|
||||
EX(Ts)[EX(opline)->result.u.var].var.ptr->refcount=1;
|
||||
EX(Ts)[EX(opline)->result.u.var].var.ptr->is_ref=1;
|
||||
|
@ -2819,7 +2819,7 @@ send_by_ref:
|
|||
if (Z_TYPE_PP(object) != IS_OBJECT) {
|
||||
zend_error(E_ERROR, "Cannot call delete on non-object type");
|
||||
}
|
||||
Z_OBJ_HT_PP(object)->delete_obj((*object));
|
||||
Z_OBJ_HT_PP(object)->delete_obj(*object TSRMLS_CC);
|
||||
}
|
||||
|
||||
zend_hash_del(EG(active_symbol_table), variable->value.str.val, variable->value.str.len+1);
|
||||
|
@ -2871,7 +2871,7 @@ send_by_ref:
|
|||
if (Z_TYPE_PP(object) != IS_OBJECT) {
|
||||
zend_error(E_ERROR, "Cannot call delete on non-object type");
|
||||
}
|
||||
Z_OBJ_HT_PP(object)->delete_obj(*object);
|
||||
Z_OBJ_HT_PP(object)->delete_obj(*object TSRMLS_CC);
|
||||
}
|
||||
|
||||
zend_hash_index_del(ht, index);
|
||||
|
@ -2885,7 +2885,7 @@ send_by_ref:
|
|||
if (Z_TYPE_PP(object) != IS_OBJECT) {
|
||||
zend_error(E_ERROR, "Cannot call delete on non-object type");
|
||||
}
|
||||
Z_OBJ_HT_PP(object)->delete_obj(*object);
|
||||
Z_OBJ_HT_PP(object)->delete_obj(*object TSRMLS_CC);
|
||||
}
|
||||
|
||||
zend_hash_del(ht, offset->value.str.val, offset->value.str.len+1);
|
||||
|
@ -2898,7 +2898,7 @@ send_by_ref:
|
|||
if (Z_TYPE_PP(object) != IS_OBJECT) {
|
||||
zend_error(E_ERROR, "Cannot call delete on non-object type");
|
||||
}
|
||||
Z_OBJ_HT_PP(object)->delete_obj(*object);
|
||||
Z_OBJ_HT_PP(object)->delete_obj(*object TSRMLS_CC);
|
||||
}
|
||||
|
||||
zend_hash_del(ht, "", sizeof(""));
|
||||
|
|
|
@ -38,10 +38,10 @@ typedef union _zend_function *(*zend_object_get_constructor_t)(zval *object TSRM
|
|||
/* Get method parameter mask - by value/by reference, etc. */
|
||||
|
||||
/* Object maintenance/destruction */
|
||||
typedef void (*zend_object_add_ref_t)(zval *object);
|
||||
typedef void (*zend_object_del_ref_t)(zval *object);
|
||||
typedef void (*zend_object_delete_obj_t)(zval *object);
|
||||
typedef zend_object_value (*zend_object_clone_obj_t)(zval *object);
|
||||
typedef void (*zend_object_add_ref_t)(zval *object TSRMLS_DC);
|
||||
typedef void (*zend_object_del_ref_t)(zval *object TSRMLS_DC);
|
||||
typedef void (*zend_object_delete_obj_t)(zval *object TSRMLS_DC);
|
||||
typedef zend_object_value (*zend_object_clone_obj_t)(zval *object TSRMLS_DC);
|
||||
|
||||
typedef int (*zend_object_get_class_name_t)(zval *object, char **class_name, zend_uint *class_name_len, int parent TSRMLS_DC);
|
||||
typedef int (*zend_object_compare_t)(zval *object1, zval *object2 TSRMLS_DC);
|
||||
|
|
|
@ -121,10 +121,9 @@ zend_object *zend_objects_get_address(zval *zobject)
|
|||
return &EG(objects).object_buckets[handle].bucket.obj.object;
|
||||
}
|
||||
|
||||
void zend_objects_add_ref(zval *object)
|
||||
void zend_objects_add_ref(zval *object TSRMLS_DC)
|
||||
{
|
||||
zend_object_handle handle = Z_OBJ_HANDLE_P(object);
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (!EG(objects).object_buckets[handle].valid) {
|
||||
zend_error(E_ERROR, "Trying to add reference to invalid object");
|
||||
|
@ -136,11 +135,10 @@ void zend_objects_add_ref(zval *object)
|
|||
#endif
|
||||
}
|
||||
|
||||
void zend_objects_delete_obj(zval *zobject)
|
||||
void zend_objects_delete_obj(zval *zobject TSRMLS_DC)
|
||||
{
|
||||
zend_object *object;
|
||||
zend_object_handle handle = Z_OBJ_HANDLE_P(zobject);
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (!EG(objects).object_buckets[handle].valid) {
|
||||
zend_error(E_ERROR, "Trying to delete invalid object");
|
||||
|
@ -166,10 +164,9 @@ void zend_objects_delete_obj(zval *zobject)
|
|||
EG(objects).free_list_head = handle; \
|
||||
EG(objects).object_buckets[handle].valid = 0;
|
||||
|
||||
void zend_objects_del_ref(zval *zobject)
|
||||
void zend_objects_del_ref(zval *zobject TSRMLS_DC)
|
||||
{
|
||||
zend_object_handle handle = Z_OBJ_HANDLE_P(zobject);
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (--EG(objects).object_buckets[handle].bucket.obj.refcount == 0) {
|
||||
zend_object *object;
|
||||
|
@ -199,14 +196,13 @@ void zend_objects_del_ref(zval *zobject)
|
|||
#endif
|
||||
}
|
||||
|
||||
zend_object_value zend_objects_clone_obj(zval *zobject)
|
||||
zend_object_value zend_objects_clone_obj(zval *zobject TSRMLS_DC)
|
||||
{
|
||||
zend_object_value retval;
|
||||
zend_object *old_object;
|
||||
zend_object *new_object;
|
||||
zend_object_handle handle = Z_OBJ_HANDLE_P(zobject);
|
||||
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (!EG(objects).object_buckets[handle].valid) {
|
||||
zend_error(E_ERROR, "Trying to clone invalid object");
|
||||
|
|
|
@ -31,10 +31,10 @@ zend_object_value zend_objects_new(zend_object **object, zend_class_entry *class
|
|||
|
||||
zend_object *zend_objects_get_address(zval *object);
|
||||
|
||||
void zend_objects_add_ref(zval *object);
|
||||
void zend_objects_del_ref(zval *object);
|
||||
void zend_objects_delete_obj(zval *object);
|
||||
zend_object_value zend_objects_clone_obj(zval *object);
|
||||
void zend_objects_add_ref(zval *object TSRMLS_DC);
|
||||
void zend_objects_del_ref(zval *object TSRMLS_DC);
|
||||
void zend_objects_delete_obj(zval *object TSRMLS_DC);
|
||||
zend_object_value zend_objects_clone_obj(zval *object TSRMLS_DC);
|
||||
|
||||
#define Z_GET_OBJ(object_zval) zend_objects_get_address(object_zval)
|
||||
|
||||
|
|
|
@ -54,9 +54,14 @@ ZEND_API void _zval_dtor(zval *zvalue ZEND_FILE_LINE_DC)
|
|||
}
|
||||
break;
|
||||
case IS_OBJECT:
|
||||
Z_OBJ_HT_P(zvalue)->del_ref(zvalue);
|
||||
{
|
||||
TSRMLS_FETCH();
|
||||
|
||||
Z_OBJ_HT_P(zvalue)->del_ref(zvalue TSRMLS_CC);
|
||||
}
|
||||
break;
|
||||
case IS_RESOURCE: {
|
||||
case IS_RESOURCE:
|
||||
{
|
||||
TSRMLS_FETCH();
|
||||
|
||||
/* destroy resource */
|
||||
|
@ -119,11 +124,14 @@ ZEND_API int _zval_copy_ctor(zval *zvalue ZEND_FILE_LINE_DC)
|
|||
}
|
||||
break;
|
||||
case IS_OBJECT:
|
||||
{
|
||||
TSRMLS_FETCH();
|
||||
#if 0
|
||||
zvalue->value.obj = zvalue->value.obj.handlers->clone_obj(zvalue->value.obj.handle);
|
||||
#else
|
||||
Z_OBJ_HT_P(zvalue)->add_ref(zvalue);
|
||||
Z_OBJ_HT_P(zvalue)->add_ref(zvalue TSRMLS_CC);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
return SUCCESS;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue