diff options
author | Andi Gutmans <andi@php.net> | 2002-03-15 16:26:17 +0000 |
---|---|---|
committer | Andi Gutmans <andi@php.net> | 2002-03-15 16:26:17 +0000 |
commit | c84a4ead958c0b052d0db918a07861f3cf7b98d0 (patch) | |
tree | 20ab67301b2bdf6853dc7b1590d245c6a350638b /Zend | |
parent | db84afb206c8fe93539e9aa4465258ef6f8d7821 (diff) | |
download | php-git-c84a4ead958c0b052d0db918a07861f3cf7b98d0.tar.gz |
- Pass TSRMLS to callbacks.
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/zend_execute.c | 10 | ||||
-rw-r--r-- | Zend/zend_object_handlers.h | 8 | ||||
-rw-r--r-- | Zend/zend_objects.c | 12 | ||||
-rw-r--r-- | Zend/zend_objects.h | 8 | ||||
-rw-r--r-- | Zend/zend_variables.c | 16 |
5 files changed, 29 insertions, 25 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 7e4db92732..d1150f520c 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -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("")); diff --git a/Zend/zend_object_handlers.h b/Zend/zend_object_handlers.h index f264187c9a..62db624846 100644 --- a/Zend/zend_object_handlers.h +++ b/Zend/zend_object_handlers.h @@ -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); diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c index dd5c25dec2..a019c9bcc4 100644 --- a/Zend/zend_objects.c +++ b/Zend/zend_objects.c @@ -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"); diff --git a/Zend/zend_objects.h b/Zend/zend_objects.h index 3ae67e4c71..27e3dca8dd 100644 --- a/Zend/zend_objects.h +++ b/Zend/zend_objects.h @@ -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) diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c index b7846211c0..f800150204 100644 --- a/Zend/zend_variables.c +++ b/Zend/zend_variables.c @@ -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); + 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; |