summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2002-03-15 16:26:17 +0000
committerAndi Gutmans <andi@php.net>2002-03-15 16:26:17 +0000
commitc84a4ead958c0b052d0db918a07861f3cf7b98d0 (patch)
tree20ab67301b2bdf6853dc7b1590d245c6a350638b /Zend
parentdb84afb206c8fe93539e9aa4465258ef6f8d7821 (diff)
downloadphp-git-c84a4ead958c0b052d0db918a07861f3cf7b98d0.tar.gz
- Pass TSRMLS to callbacks.
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_execute.c10
-rw-r--r--Zend/zend_object_handlers.h8
-rw-r--r--Zend/zend_objects.c12
-rw-r--r--Zend/zend_objects.h8
-rw-r--r--Zend/zend_variables.c16
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;