diff options
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/zend.c | 3 | ||||
-rw-r--r-- | Zend/zend_API.c | 4 | ||||
-rw-r--r-- | Zend/zend_alloc.c | 32 | ||||
-rw-r--r-- | Zend/zend_ast.c | 6 | ||||
-rw-r--r-- | Zend/zend_compile.c | 2 | ||||
-rw-r--r-- | Zend/zend_execute_API.c | 7 | ||||
-rw-r--r-- | Zend/zend_hash.c | 28 | ||||
-rw-r--r-- | Zend/zend_inheritance.c | 1 | ||||
-rw-r--r-- | Zend/zend_ini.c | 7 | ||||
-rw-r--r-- | Zend/zend_ini_parser.y | 1 | ||||
-rw-r--r-- | Zend/zend_language_parser.y | 1 | ||||
-rw-r--r-- | Zend/zend_list.c | 3 | ||||
-rw-r--r-- | Zend/zend_opcode.c | 1 | ||||
-rw-r--r-- | Zend/zend_operators.c | 16 | ||||
-rw-r--r-- | Zend/zend_signal.c | 1 | ||||
-rw-r--r-- | Zend/zend_variables.c | 7 |
16 files changed, 118 insertions, 2 deletions
diff --git a/Zend/zend.c b/Zend/zend.c index 8c10125fe3..ab50087a39 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -809,6 +809,8 @@ void zenderror(const char *error) /* {{{ */ BEGIN_EXTERN_C() ZEND_API void _zend_bailout(char *filename, uint lineno) /* {{{ */ { + TSRMLS_FETCH(); + if (!EG(bailout)) { zend_output_debug_string(1, "%s(%d) : Bailed out without a bailout address!", filename, lineno); exit(-1); @@ -974,6 +976,7 @@ static void zend_error_va_list(int type, const char *format, va_list args) zend_stack delayed_oplines_stack; zend_stack context_stack; zend_array *symbol_table; + TSRMLS_FETCH(); /* Report about uncaught exception in case of fatal errors */ if (EG(exception)) { diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 632d4a4ebe..41214865f4 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -48,6 +48,7 @@ ZEND_API int zend_get_parameters(int ht, int param_count, ...) /* {{{ */ int arg_count; va_list ptr; zval **param, *param_ptr; + TSRMLS_FETCH(); param_ptr = ZEND_CALL_ARG(EG(current_execute_data), 1); arg_count = EG(current_execute_data)->num_args; @@ -83,6 +84,7 @@ ZEND_API int zend_get_parameters_ex(int param_count, ...) /* {{{ */ int arg_count; va_list ptr; zval **param, *param_ptr; + TSRMLS_FETCH(); param_ptr = ZEND_CALL_ARG(EG(current_execute_data), 1); arg_count = EG(current_execute_data)->num_args; @@ -2473,6 +2475,8 @@ static void clean_module_classes(int module_number TSRMLS_DC) /* {{{ */ void module_destructor(zend_module_entry *module) /* {{{ */ { + TSRMLS_FETCH(); + if (module->type == MODULE_TEMPORARY) { zend_clean_module_rsrc_dtors(module->module_number TSRMLS_CC); clean_module_constants(module->module_number TSRMLS_CC); diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index fb4d3b35e1..c647669ea7 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -360,6 +360,8 @@ static ZEND_NORETURN void zend_mm_safe_error(zend_mm_heap *heap, #endif size_t size) { + TSRMLS_FETCH(); + heap->overflow = 1; zend_try { zend_error_noreturn(E_ERROR, @@ -2097,6 +2099,7 @@ ZEND_API int is_zend_mm(TSRMLS_D) # define _ZEND_BIN_ALLOCATOR(_num, _size, _elements, _pages, x, y) \ ZEND_API void* ZEND_FASTCALL _emalloc_ ## _size(void) { \ + TSRMLS_FETCH(); \ ZEND_MM_CUSTOM_ALLOCATOR(_size); \ return zend_mm_alloc_small(AG(mm_heap), _size, _num ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); \ } @@ -2105,18 +2108,23 @@ ZEND_MM_BINS_INFO(_ZEND_BIN_ALLOCATOR, x, y) ZEND_API void* ZEND_FASTCALL _emalloc_large(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { + TSRMLS_FETCH(); + ZEND_MM_CUSTOM_ALLOCATOR(size); return zend_mm_alloc_large(AG(mm_heap), size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); } ZEND_API void* ZEND_FASTCALL _emalloc_huge(size_t size) { + TSRMLS_FETCH(); + ZEND_MM_CUSTOM_ALLOCATOR(size); return zend_mm_alloc_huge(AG(mm_heap), size); } # define _ZEND_BIN_FREE(_num, _size, _elements, _pages, x, y) \ ZEND_API void ZEND_FASTCALL _efree_ ## _size(void *ptr) { \ + TSRMLS_FETCH(); \ ZEND_MM_CUSTOM_DEALLOCATOR(ptr); \ { \ size_t page_offset = ZEND_MM_ALIGNED_OFFSET(ptr, ZEND_MM_CHUNK_SIZE); \ @@ -2133,6 +2141,8 @@ ZEND_MM_BINS_INFO(_ZEND_BIN_FREE, x, y) ZEND_API void ZEND_FASTCALL _efree_large(void *ptr, size_t size) { + TSRMLS_FETCH(); + ZEND_MM_CUSTOM_DEALLOCATOR(ptr); { size_t page_offset = ZEND_MM_ALIGNED_OFFSET(ptr, ZEND_MM_CHUNK_SIZE); @@ -2149,6 +2159,8 @@ ZEND_API void ZEND_FASTCALL _efree_large(void *ptr, size_t size) ZEND_API void ZEND_FASTCALL _efree_huge(void *ptr, size_t size) { + TSRMLS_FETCH(); + ZEND_MM_CUSTOM_DEALLOCATOR(ptr); // TODO: use size??? zend_mm_free_huge(AG(mm_heap), ptr); @@ -2157,6 +2169,8 @@ ZEND_API void ZEND_FASTCALL _efree_huge(void *ptr, size_t size) ZEND_API void* ZEND_FASTCALL _emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { + TSRMLS_FETCH(); + #if ZEND_MM_CUSTOM if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) { return AG(mm_heap)->_malloc(size); @@ -2167,6 +2181,8 @@ ZEND_API void* ZEND_FASTCALL _emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LI ZEND_API void ZEND_FASTCALL _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { + TSRMLS_FETCH(); + #if ZEND_MM_CUSTOM if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) { AG(mm_heap)->_free(ptr); @@ -2178,6 +2194,8 @@ ZEND_API void ZEND_FASTCALL _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_OR ZEND_API void* ZEND_FASTCALL _erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { + TSRMLS_FETCH(); + if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) { return AG(mm_heap)->_realloc(ptr, size); } @@ -2229,7 +2247,9 @@ ZEND_API void* ZEND_FASTCALL _safe_realloc(void *ptr, size_t nmemb, size_t size, ZEND_API void* ZEND_FASTCALL _ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { void *p; - +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif HANDLE_BLOCK_INTERRUPTIONS(); p = _safe_emalloc(nmemb, size, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); @@ -2246,6 +2266,9 @@ ZEND_API char* ZEND_FASTCALL _estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_ { size_t length; char *p; +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif HANDLE_BLOCK_INTERRUPTIONS(); @@ -2263,6 +2286,9 @@ ZEND_API char* ZEND_FASTCALL _estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_ ZEND_API char* ZEND_FASTCALL _estrndup(const char *s, size_t length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { char *p; +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif HANDLE_BLOCK_INTERRUPTIONS(); @@ -2281,6 +2307,9 @@ ZEND_API char* ZEND_FASTCALL _estrndup(const char *s, size_t length ZEND_FILE_LI ZEND_API char* ZEND_FASTCALL zend_strndup(const char *s, size_t length) { char *p; +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif HANDLE_BLOCK_INTERRUPTIONS(); @@ -2338,7 +2367,6 @@ ZEND_API void shutdown_memory_manager(int silent, int full_shutdown TSRMLS_DC) static void alloc_globals_ctor(zend_alloc_globals *alloc_globals TSRMLS_DC) { - #if ZEND_MM_CUSTOM char *tmp = getenv("USE_ZEND_ALLOC"); diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index 97db764fbc..9604079a9e 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -43,6 +43,7 @@ static inline size_t zend_ast_list_size(uint32_t children) { ZEND_API zend_ast *zend_ast_create_znode(znode *node) { zend_ast_znode *ast; + TSRMLS_FETCH(); ast = zend_ast_alloc(sizeof(zend_ast_znode) TSRMLS_CC); ast->kind = ZEND_AST_ZNODE; @@ -54,6 +55,7 @@ ZEND_API zend_ast *zend_ast_create_znode(znode *node) { ZEND_API zend_ast *zend_ast_create_zval_ex(zval *zv, zend_ast_attr attr) { zend_ast_zval *ast; + TSRMLS_FETCH(); ast = zend_ast_alloc(sizeof(zend_ast_zval) TSRMLS_CC); ast->kind = ZEND_AST_ZVAL; @@ -68,6 +70,7 @@ ZEND_API zend_ast *zend_ast_create_decl( zend_string *name, zend_ast *child0, zend_ast *child1, zend_ast *child2 ) { zend_ast_decl *ast; + TSRMLS_FETCH(); ast = zend_ast_alloc(sizeof(zend_ast_decl) TSRMLS_CC); ast->kind = kind; @@ -88,6 +91,7 @@ ZEND_API zend_ast *zend_ast_create_decl( static zend_ast *zend_ast_create_from_va_list(zend_ast_kind kind, zend_ast_attr attr, va_list va) { uint32_t i, children = kind >> ZEND_AST_NUM_CHILDREN_SHIFT; zend_ast *ast; + TSRMLS_FETCH(); ast = zend_ast_alloc(zend_ast_size(children) TSRMLS_CC); ast->kind = kind; @@ -136,6 +140,7 @@ ZEND_API zend_ast *zend_ast_create(zend_ast_kind kind, ...) { ZEND_API zend_ast *zend_ast_create_list(uint32_t init_children, zend_ast_kind kind, ...) { zend_ast *ast; zend_ast_list *list; + TSRMLS_FETCH(); ast = zend_ast_alloc(zend_ast_list_size(4) TSRMLS_CC); list = (zend_ast_list *) ast; @@ -164,6 +169,7 @@ static inline zend_bool is_power_of_two(uint32_t n) { ZEND_API zend_ast *zend_ast_list_add(zend_ast *ast, zend_ast *op) { zend_ast_list *list = zend_ast_get_list(ast); if (list->children >= 4 && is_power_of_two(list->children)) { + TSRMLS_FETCH(); list = zend_ast_realloc(list, zend_ast_list_size(list->children), zend_ast_list_size(list->children * 2) TSRMLS_CC); } diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 08d2ee1502..e1246b28dc 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -186,6 +186,8 @@ void zend_init_compiler_data_structures(TSRMLS_D) /* {{{ */ ZEND_API void file_handle_dtor(zend_file_handle *fh) /* {{{ */ { + TSRMLS_FETCH(); + zend_file_handle_dtor(fh TSRMLS_CC); } /* }}} */ diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 2ec9c8dbcc..bd24609d01 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -206,6 +206,8 @@ static int zval_call_destructor(zval *zv TSRMLS_DC) /* {{{ */ static void zend_unclean_zval_ptr_dtor(zval *zv) /* {{{ */ { + TSRMLS_FETCH(); + if (Z_TYPE_P(zv) == IS_INDIRECT) { zv = Z_INDIRECT_P(zv); } @@ -483,6 +485,7 @@ ZEND_API zend_bool zend_is_executing(TSRMLS_D) /* {{{ */ ZEND_API void _zval_ptr_dtor(zval *zval_ptr ZEND_FILE_LINE_DC) /* {{{ */ { + TSRMLS_FETCH(); i_zval_ptr_dtor(zval_ptr ZEND_FILE_LINE_RELAY_CC TSRMLS_CC); } /* }}} */ @@ -1141,6 +1144,8 @@ ZEND_API int zend_eval_string_ex(char *str, zval *retval_ptr, char *string_name, ZEND_API void zend_timeout(int dummy) /* {{{ */ { + TSRMLS_FETCH(); + if (zend_on_timeout) { #ifdef ZEND_SIGNALS /* @@ -1278,6 +1283,8 @@ void zend_shutdown_timeout_thread(void) /* {{{ */ void zend_set_timeout(zend_long seconds, int reset_signals) /* {{{ */ { + TSRMLS_FETCH(); + EG(timeout_seconds) = seconds; #ifdef ZEND_WIN32 diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 797205775a..6304737f04 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -252,6 +252,9 @@ static zend_always_inline zval *_zend_hash_add_or_update_i(HashTable *ht, zend_s uint32_t nIndex; uint32_t idx; Bucket *p; +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif IS_CONSISTENT(ht); @@ -404,6 +407,9 @@ static zend_always_inline zval *_zend_hash_index_add_or_update_i(HashTable *ht, uint32_t nIndex; uint32_t idx; Bucket *p; +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif IS_CONSISTENT(ht); CHECK_INIT(ht, h < ht->nTableSize); @@ -541,6 +547,9 @@ ZEND_API zval *_zend_hash_next_index_insert_new(HashTable *ht, zval *pData ZEND_ static void zend_hash_do_resize(HashTable *ht) { +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif IS_CONSISTENT(ht); @@ -659,6 +668,9 @@ ZEND_API int zend_hash_del(HashTable *ht, zend_string *key) uint32_t idx; Bucket *p; Bucket *prev = NULL; +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif IS_CONSISTENT(ht); @@ -695,6 +707,9 @@ ZEND_API int zend_hash_del_ind(HashTable *ht, zend_string *key) uint32_t idx; Bucket *p; Bucket *prev = NULL; +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif IS_CONSISTENT(ht); @@ -744,6 +759,9 @@ ZEND_API int zend_hash_str_del(HashTable *ht, const char *str, size_t len) uint32_t idx; Bucket *p; Bucket *prev = NULL; +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif IS_CONSISTENT(ht); @@ -792,6 +810,9 @@ ZEND_API int zend_hash_str_del_ind(HashTable *ht, const char *str, size_t len) uint32_t idx; Bucket *p; Bucket *prev = NULL; +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif IS_CONSISTENT(ht); @@ -822,6 +843,9 @@ ZEND_API int zend_hash_index_del(HashTable *ht, zend_ulong h) uint32_t idx; Bucket *p; Bucket *prev = NULL; +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif IS_CONSISTENT(ht); @@ -937,6 +961,10 @@ ZEND_API void zend_hash_clean(HashTable *ht) */ static void zend_hash_apply_deleter(HashTable *ht, uint32_t idx, Bucket *p) { +#ifdef ZEND_SIGNALS + TSRMLS_FETCH(); +#endif + HANDLE_BLOCK_INTERRUPTIONS(); _zend_hash_del_el(ht, idx, p); HANDLE_UNBLOCK_INTERRUPTIONS(); diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index e7f075d457..f240ed7159 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -551,6 +551,7 @@ static zend_bool do_inherit_method_check(HashTable *child_function_table, zend_f { uint32_t parent_flags = parent->common.fn_flags; zend_function *child; + TSRMLS_FETCH(); if ((child = zend_hash_find_ptr(child_function_table, key)) == NULL) { if (parent_flags & (ZEND_ACC_ABSTRACT)) { diff --git a/Zend/zend_ini.c b/Zend/zend_ini.c index 1c827bbe4c..e60e58d2aa 100644 --- a/Zend/zend_ini.c +++ b/Zend/zend_ini.c @@ -292,6 +292,8 @@ ZEND_API void zend_ini_refresh_caches(int stage TSRMLS_DC) /* {{{ */ ZEND_API int zend_alter_ini_entry(zend_string *name, zend_string *new_value, int modify_type, int stage) /* {{{ */ { + TSRMLS_FETCH(); + return zend_alter_ini_entry_ex(name, new_value, modify_type, stage, 0 TSRMLS_CC); } /* }}} */ @@ -300,6 +302,7 @@ ZEND_API int zend_alter_ini_entry_chars(zend_string *name, const char *value, si { int ret; zend_string *new_value; + TSRMLS_FETCH(); new_value = zend_string_init(value, value_length, stage != ZEND_INI_STAGE_RUNTIME); ret = zend_alter_ini_entry_ex(name, new_value, modify_type, stage, 0 TSRMLS_CC); @@ -375,6 +378,7 @@ ZEND_API int zend_alter_ini_entry_ex(zend_string *name, zend_string *new_value, ZEND_API int zend_restore_ini_entry(zend_string *name, int stage) /* {{{ */ { zend_ini_entry *ini_entry; + TSRMLS_FETCH(); if ((ini_entry = zend_hash_find_ptr(EG(ini_directives), name)) == NULL || (stage == ZEND_INI_STAGE_RUNTIME && (ini_entry->modifiable & ZEND_INI_USER) == 0)) { @@ -414,6 +418,7 @@ ZEND_API int zend_ini_register_displayer(char *name, uint name_length, void (*di ZEND_API zend_long zend_ini_long(char *name, uint name_length, int orig) /* {{{ */ { zend_ini_entry *ini_entry; + TSRMLS_FETCH(); ini_entry = zend_hash_str_find_ptr(EG(ini_directives), name, name_length); if (ini_entry) { @@ -431,6 +436,7 @@ ZEND_API zend_long zend_ini_long(char *name, uint name_length, int orig) /* {{{ ZEND_API double zend_ini_double(char *name, uint name_length, int orig) /* {{{ */ { zend_ini_entry *ini_entry; + TSRMLS_FETCH(); ini_entry = zend_hash_str_find_ptr(EG(ini_directives), name, name_length); if (ini_entry) { @@ -448,6 +454,7 @@ ZEND_API double zend_ini_double(char *name, uint name_length, int orig) /* {{{ * ZEND_API char *zend_ini_string_ex(char *name, uint name_length, int orig, zend_bool *exists) /* {{{ */ { zend_ini_entry *ini_entry; + TSRMLS_FETCH(); ini_entry = zend_hash_str_find_ptr(EG(ini_directives), name, name_length); if (ini_entry) { diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y index 3ff392632c..8d5a9795af 100644 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@ -158,6 +158,7 @@ static void ini_error(const char *msg) char *error_buf; int error_buf_len; char *currently_parsed_filename; + TSRMLS_FETCH(); currently_parsed_filename = zend_ini_scanner_get_filename(TSRMLS_C); if (currently_parsed_filename) { diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 83ece22e78..15eb3f8015 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -1166,6 +1166,7 @@ static YYSIZE_T zend_yytnamerr(char *yyres, const char *yystr) return yystrlen(yystr); } { + TSRMLS_FETCH(); if (CG(parse_error) == 0) { char buffer[120]; const unsigned char *end, *str, *tok1 = NULL, *tok2 = NULL; diff --git a/Zend/zend_list.c b/Zend/zend_list.c index ab05f8c7ac..d8141f8664 100644 --- a/Zend/zend_list.c +++ b/Zend/zend_list.c @@ -165,6 +165,8 @@ void list_entry_destructor(zval *zv) zend_resource *res = Z_RES_P(zv); if (res->type >= 0) { + TSRMLS_FETCH(); + zend_resource_dtor(res TSRMLS_CC); } efree_size(res, sizeof(zend_resource)); @@ -176,6 +178,7 @@ void plist_entry_destructor(zval *zv) if (res->type >= 0) { zend_rsrc_list_dtors_entry *ld; + TSRMLS_FETCH(); ld = zend_hash_index_find_ptr(&list_destructors, res->type); if (ld) { diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 965561311d..5902abd4c5 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -112,6 +112,7 @@ ZEND_API void destroy_zend_function(zend_function *function TSRMLS_DC) ZEND_API void zend_function_dtor(zval *zv) { zend_function *function = Z_PTR_P(zv); + TSRMLS_FETCH(); if (function->type == ZEND_USER_FUNCTION) { ZEND_ASSERT(function->common.function_name); diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 963c261d42..b0a0e7519e 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -371,6 +371,7 @@ ZEND_API void convert_to_long_base(zval *op, int base) /* {{{ */ case IS_OBJECT: { zval dst; + TSRMLS_FETCH(); convert_object_to_type(op, &dst, IS_LONG, convert_to_long); zval_dtor(op); @@ -428,6 +429,7 @@ ZEND_API void convert_to_double(zval *op) /* {{{ */ case IS_OBJECT: { zval dst; + TSRMLS_FETCH(); convert_object_to_type(op, &dst, IS_DOUBLE, convert_to_double); zval_dtor(op); @@ -451,6 +453,7 @@ ZEND_API void convert_to_null(zval *op) /* {{{ */ if (Z_TYPE_P(op) == IS_OBJECT) { if (Z_OBJ_HT_P(op)->cast_object) { zval org; + TSRMLS_FETCH(); ZVAL_COPY_VALUE(&org, op); if (Z_OBJ_HT_P(op)->cast_object(&org, op, IS_NULL TSRMLS_CC) == SUCCESS) { @@ -511,6 +514,7 @@ ZEND_API void convert_to_boolean(zval *op) /* {{{ */ case IS_OBJECT: { zval dst; + TSRMLS_FETCH(); convert_object_to_type(op, &dst, _IS_BOOL, convert_to_boolean); zval_dtor(op); @@ -539,6 +543,7 @@ ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC) /* {{{ */ case IS_UNDEF: case IS_NULL: case IS_FALSE: { + TSRMLS_FETCH(); ZVAL_EMPTY_STRING(op); break; } @@ -560,6 +565,7 @@ ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC) /* {{{ */ case IS_DOUBLE: { zend_string *str; double dval = Z_DVAL_P(op); + TSRMLS_FETCH(); str = zend_strpprintf(0, "%.*G", (int) EG(precision), dval); /* %G already handles removing trailing zeros from the fractional part, yay */ @@ -573,6 +579,7 @@ ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC) /* {{{ */ break; case IS_OBJECT: { zval dst; + TSRMLS_FETCH(); convert_object_to_type(op, &dst, IS_STRING, convert_to_string); @@ -605,6 +612,8 @@ static void convert_scalar_to_array(zval *op TSRMLS_DC) /* {{{ */ ZEND_API void convert_to_array(zval *op) /* {{{ */ { + TSRMLS_FETCH(); + switch (Z_TYPE_P(op)) { case IS_ARRAY: break; @@ -651,6 +660,8 @@ ZEND_API void convert_to_array(zval *op) /* {{{ */ ZEND_API void convert_to_object(zval *op) /* {{{ */ { + TSRMLS_FETCH(); + switch (Z_TYPE_P(op)) { case IS_ARRAY: { @@ -2153,6 +2164,7 @@ try_again: /* proxy object */ zval rv; zval *val; + TSRMLS_FETCH(); val = Z_OBJ_HANDLER_P(op1, get)(op1, &rv TSRMLS_CC); Z_ADDREF_P(val); @@ -2162,6 +2174,7 @@ try_again: } else if (Z_OBJ_HANDLER_P(op1, do_operation)) { zval op2; int res; + TSRMLS_FETCH(); ZVAL_LONG(&op2, 1); res = Z_OBJ_HANDLER_P(op1, do_operation)(ZEND_ADD, op1, op1, &op2 TSRMLS_CC); @@ -2226,6 +2239,7 @@ try_again: /* proxy object */ zval rv; zval *val; + TSRMLS_FETCH(); val = Z_OBJ_HANDLER_P(op1, get)(op1, &rv TSRMLS_CC); Z_ADDREF_P(val); @@ -2235,6 +2249,7 @@ try_again: } else if (Z_OBJ_HANDLER_P(op1, do_operation)) { zval op2; int res; + TSRMLS_FETCH(); ZVAL_LONG(&op2, 1); res = Z_OBJ_HANDLER_P(op1, do_operation)(ZEND_SUB, op1, op1, &op2 TSRMLS_CC); @@ -2543,6 +2558,7 @@ ZEND_API void zend_compare_objects(zval *result, zval *o1, zval *o2 TSRMLS_DC) / ZEND_API void zend_locale_sprintf_double(zval *op ZEND_FILE_LINE_DC) /* {{{ */ { zend_string *str; + TSRMLS_FETCH(); str = zend_strpprintf(0, "%.*G", (int) EG(precision), (double)Z_DVAL_P(op)); ZVAL_NEW_STR(op, str); diff --git a/Zend/zend_signal.c b/Zend/zend_signal.c index cf4c3179d1..6105fb1119 100644 --- a/Zend/zend_signal.c +++ b/Zend/zend_signal.c @@ -74,6 +74,7 @@ void zend_signal_handler_defer(int signo, siginfo_t *siginfo, void *context) { int errno_save = errno; zend_signal_queue_t *queue, *qtmp; + TSRMLS_FETCH(); if (SIGG(active)) { if (SIGG(depth) == 0) { /* try to handle signal */ diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c index f200f00e65..3e68a38487 100644 --- a/Zend/zend_variables.c +++ b/Zend/zend_variables.c @@ -39,6 +39,7 @@ ZEND_API void _zval_dtor_func(zend_refcounted *p ZEND_FILE_LINE_DC) } case IS_ARRAY: { zend_array *arr = (zend_array*)p; + TSRMLS_FETCH(); if (arr != &EG(symbol_table)) { /* break possible cycles */ @@ -58,12 +59,14 @@ ZEND_API void _zval_dtor_func(zend_refcounted *p ZEND_FILE_LINE_DC) } case IS_OBJECT: { zend_object *obj = (zend_object*)p; + TSRMLS_FETCH(); OBJ_RELEASE(obj); break; } case IS_RESOURCE: { zend_resource *res = (zend_resource*)p; + TSRMLS_FETCH(); if (--GC_REFCOUNT(res) == 0) { /* destroy resource */ @@ -96,6 +99,7 @@ ZEND_API void _zval_dtor_func_for_ptr(zend_refcounted *p ZEND_FILE_LINE_DC) } case IS_ARRAY: { zend_array *arr = (zend_array*)p; + TSRMLS_FETCH(); if (arr != &EG(symbol_table)) { /* break possible cycles */ @@ -115,12 +119,14 @@ ZEND_API void _zval_dtor_func_for_ptr(zend_refcounted *p ZEND_FILE_LINE_DC) } case IS_OBJECT: { zend_object *obj = (zend_object*)p; + TSRMLS_FETCH(); zend_objects_store_del(obj TSRMLS_CC); break; } case IS_RESOURCE: { zend_resource *res = (zend_resource*)p; + TSRMLS_FETCH(); /* destroy resource */ zend_list_free(res); @@ -232,6 +238,7 @@ ZEND_API void _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC) break; case IS_ARRAY: { HashTable *ht; + TSRMLS_FETCH(); if (Z_ARR_P(zvalue) == &EG(symbol_table)) { return; /* do nothing */ |