]> granicus.if.org Git - php/commitdiff
- Pass TSRMLS to callbacks.
authorAndi Gutmans <andi@php.net>
Fri, 15 Mar 2002 16:26:17 +0000 (16:26 +0000)
committerAndi Gutmans <andi@php.net>
Fri, 15 Mar 2002 16:26:17 +0000 (16:26 +0000)
Zend/zend_execute.c
Zend/zend_object_handlers.h
Zend/zend_objects.c
Zend/zend_objects.h
Zend/zend_variables.c

index 7e4db92732ca46b8ba907c4c0a04e58845483c21..d1150f520cf4dd953ac9cf628f42ade7fba34300 100644 (file)
@@ -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(""));
index f264187c9aacc4480deb49cb5ca9ffca6d32915e..62db62484631cc1a8f41264e890870902542a673 100644 (file)
@@ -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);
index dd5c25dec2703cae2b0fb5fa72039e5df49f6cb6..a019c9bcc47281dfb7675175a408d7da27f2397c 100644 (file)
@@ -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");
index 3ae67e4c71ca99dc920a801d649e23aeae2280ec..27e3dca8ddc24380ed22cf4d5be95970035e4888 100644 (file)
@@ -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)
 
index b7846211c04ff74af781080c3e301c9f0c908279..f800150204985fa8f31bbe15ebec35142e56f817 100644 (file)
@@ -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;