ZEND_API void init_op_array(zend_op_array *op_array, zend_uchar type, int initial_ops_size TSRMLS_DC);
ZEND_API void destroy_op_array(zend_op_array *op_array TSRMLS_DC);
ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC);
-ZEND_API int zend_cleanup_class_data(zend_class_entry **pce TSRMLS_DC);
-ZEND_API int zend_cleanup_user_class_data(zend_class_entry **pce TSRMLS_DC);
+ZEND_API int zend_cleanup_class_data(zval *zv TSRMLS_DC);
+ZEND_API int zend_cleanup_user_class_data(zval *zv TSRMLS_DC);
ZEND_API void zend_cleanup_internal_class_data(zend_class_entry *ce TSRMLS_DC);
ZEND_API void zend_cleanup_internal_classes(TSRMLS_D);
-ZEND_API int zend_cleanup_function_data(zend_function *function TSRMLS_DC);
-ZEND_API int zend_cleanup_function_data_full(zend_function *function TSRMLS_DC);
+ZEND_API int zend_cleanup_function_data(zval *zv TSRMLS_DC);
+ZEND_API int zend_cleanup_function_data_full(zval *zv TSRMLS_DC);
ZEND_API void destroy_zend_function(zend_function *function TSRMLS_DC);
ZEND_API void zend_function_dtor(zval *zv);
* Note that only run-time accessed data need to be cleaned up, pre-defined data can
* not contain objects and thus are not probelmatic */
if (EG(full_tables_cleanup)) {
- zend_hash_apply(EG(function_table), (apply_func_t) zend_cleanup_function_data_full TSRMLS_CC);
- zend_hash_apply(EG(class_table), (apply_func_t) zend_cleanup_class_data TSRMLS_CC);
+ zend_hash_apply(EG(function_table), zend_cleanup_function_data_full TSRMLS_CC);
+ zend_hash_apply(EG(class_table), zend_cleanup_class_data TSRMLS_CC);
} else {
- zend_hash_reverse_apply(EG(function_table), (apply_func_t) zend_cleanup_function_data TSRMLS_CC);
- zend_hash_reverse_apply(EG(class_table), (apply_func_t) zend_cleanup_user_class_data TSRMLS_CC);
+ zend_hash_reverse_apply(EG(function_table), zend_cleanup_function_data TSRMLS_CC);
+ zend_hash_reverse_apply(EG(class_table), zend_cleanup_user_class_data TSRMLS_CC);
zend_cleanup_internal_classes(TSRMLS_C);
}
} zend_end_try();
/* Destroy all op arrays */
if (EG(full_tables_cleanup)) {
- zend_hash_reverse_apply(EG(function_table), (apply_func_t) clean_non_persistent_function_full TSRMLS_CC);
- zend_hash_reverse_apply(EG(class_table), (apply_func_t) clean_non_persistent_class_full TSRMLS_CC);
+ zend_hash_reverse_apply(EG(function_table), clean_non_persistent_function_full TSRMLS_CC);
+ zend_hash_reverse_apply(EG(class_table), clean_non_persistent_class_full TSRMLS_CC);
} else {
- zend_hash_reverse_apply(EG(function_table), (apply_func_t) clean_non_persistent_function TSRMLS_CC);
- zend_hash_reverse_apply(EG(class_table), (apply_func_t) clean_non_persistent_class TSRMLS_CC);
+ zend_hash_reverse_apply(EG(function_table), clean_non_persistent_function TSRMLS_CC);
+ zend_hash_reverse_apply(EG(class_table), clean_non_persistent_class TSRMLS_CC);
}
while (EG(symtable_cache_ptr)>=EG(symtable_cache)) {
}
}
-ZEND_API int zend_cleanup_function_data(zend_function *function TSRMLS_DC)
+ZEND_API int zend_cleanup_function_data(zval *zv TSRMLS_DC)
{
+ zend_function *function = Z_PTR_P(zv);
+
if (function->type == ZEND_USER_FUNCTION) {
zend_cleanup_op_array_data((zend_op_array *) function);
return ZEND_HASH_APPLY_KEEP;
}
}
-ZEND_API int zend_cleanup_function_data_full(zend_function *function TSRMLS_DC)
+ZEND_API int zend_cleanup_function_data_full(zval *zv TSRMLS_DC)
{
+ zend_function *function = Z_PTR_P(zv);
+
if (function->type == ZEND_USER_FUNCTION) {
zend_cleanup_op_array_data((zend_op_array *) function);
}
/* Note that only run-time accessed data need to be cleaned up, pre-defined data can
not contain objects and thus are not probelmatic */
if (ce->ce_flags & ZEND_HAS_STATIC_IN_METHODS) {
- zend_hash_apply(&ce->function_table, (apply_func_t) zend_cleanup_function_data_full TSRMLS_CC);
+ zend_hash_apply(&ce->function_table, zend_cleanup_function_data_full TSRMLS_CC);
}
if (ce->static_members_table) {
int i;
cleanup_internal_class_data(ce TSRMLS_CC);
}
-ZEND_API int zend_cleanup_user_class_data(zend_class_entry **pce TSRMLS_DC)
+ZEND_API int zend_cleanup_user_class_data(zval *zv TSRMLS_DC)
{
- if ((*pce)->type == ZEND_USER_CLASS) {
- cleanup_user_class_data(*pce TSRMLS_CC);
+ zend_class_entry *ce = Z_PTR_P(zv);
+
+ if (ce->type == ZEND_USER_CLASS) {
+ cleanup_user_class_data(ce TSRMLS_CC);
return ZEND_HASH_APPLY_KEEP;
} else {
return ZEND_HASH_APPLY_STOP;
}
}
-ZEND_API int zend_cleanup_class_data(zend_class_entry **pce TSRMLS_DC)
+ZEND_API int zend_cleanup_class_data(zval *zv TSRMLS_DC)
{
- if ((*pce)->type == ZEND_USER_CLASS) {
- cleanup_user_class_data(*pce TSRMLS_CC);
+ zend_class_entry *ce = Z_PTR_P(zv);
+
+ if (ce->type == ZEND_USER_CLASS) {
+ cleanup_user_class_data(ce TSRMLS_CC);
} else {
- cleanup_internal_class_data(*pce TSRMLS_CC);
+ cleanup_internal_class_data(ce TSRMLS_CC);
}
return 0;
}