From: Andi Gutmans Date: Wed, 26 Jun 2002 11:07:35 +0000 (+0000) Subject: - Fix problem with scope's not changing correctly during method calls. X-Git-Tag: php-4.3.0dev_zend2_alpha2~75 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b55a20abf42ebba89a8555169a81bcb7734efe76;p=php - Fix problem with scope's not changing correctly during method calls. - Reapply a tiny optimization to the allocator so that in non-debug mode - we clean memory without detecting leaks. --- diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index def9fa135c..c93317e75b 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -441,18 +441,32 @@ ZEND_API void shutdown_memory_manager(int silent, int clean_cache TSRMLS_DC) int had_leaks = 0; #endif +#if defined(ZEND_MM) && !ZEND_DEBUG + if (clean_cache) { + zend_mm_shutdown(&AG(mm_heap)); + return; + } +#elif defined(ZEND_WIN32) && !ZEND_DEBUG + if (clean_cache && AG(memory_heap)) { + HeapDestroy(AG(memory_heap)); + return; + } +#endif + #if ZEND_ENABLE_FAST_CACHE - zend_fast_cache_list_entry *fast_cache_list_entry, *next_fast_cache_list_entry; - unsigned int fci; - - for (fci=0; fcinext; - efree(fast_cache_list_entry); - fast_cache_list_entry = next_fast_cache_list_entry; + { + zend_fast_cache_list_entry *fast_cache_list_entry, *next_fast_cache_list_entry; + unsigned int fci; + + for (fci=0; fcinext; + efree(fast_cache_list_entry); + fast_cache_list_entry = next_fast_cache_list_entry; + } + AG(fast_cache_list_head)[fci] = NULL; } - AG(fast_cache_list_head)[fci] = NULL; } #endif /* ZEND_ENABLE_FAST_CACHE */ @@ -564,13 +578,15 @@ ZEND_API void shutdown_memory_manager(int silent, int clean_cache TSRMLS_DC) #endif -#ifdef ZEND_MM +#if defined(ZEND_MM) && ZEND_DEBUG if (clean_cache) { zend_mm_shutdown(&AG(mm_heap)); + return; } -#elif defined(ZEND_WIN32) +#elif defined(ZEND_WIN32) && ZEND_DEBUG if (clean_cache && AG(memory_heap)) { HeapDestroy(AG(memory_heap)); + return; } #endif } diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 858766817b..581de6f3e8 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1939,7 +1939,7 @@ binary_assign_op_addr_obj: } if(EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = Z_OBJCE_P(EX(object)); + EX(calling_scope) = EX(fbc)->common.scope; } else { EX(calling_scope) = NULL; }