]> granicus.if.org Git - php/commitdiff
- Don't keep allocated blocks in a linked list if we're in non-debug mode
authorAndi Gutmans <andi@php.net>
Mon, 24 Jun 2002 07:22:25 +0000 (07:22 +0000)
committerAndi Gutmans <andi@php.net>
Mon, 24 Jun 2002 07:22:25 +0000 (07:22 +0000)
- as now the memory manager takes care to nuke all leaking blocks.

Zend/zend_alloc.c
Zend/zend_alloc.h
Zend/zend_mm.h

index 46831ef314c5eb9e7bf42e4bb4442ea3c622a28f..d2a322e43159c123ee6ba85592a14202ea60a232 100644 (file)
@@ -172,7 +172,9 @@ ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
                return (void *)p;
        }
        p->cached = 0;
+#if ZEND_DEBUG || !defined(ZEND_MM)
        ADD_POINTER_TO_LIST(p);
+#endif
        p->size = size; /* Save real size for correct cache output */
 #if ZEND_DEBUG
        p->filename = __zend_filename;
@@ -231,7 +233,9 @@ ZEND_API void _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
                return;
        }
        HANDLE_BLOCK_INTERRUPTIONS();
+#if ZEND_DEBUG || !defined(ZEND_MM)
        REMOVE_POINTER_FROM_LIST(p);
+#endif
 
 #if MEMORY_LIMIT
        AG(allocated_memory) -= SIZE;
@@ -288,7 +292,9 @@ ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LIN
        CALCULATE_REAL_SIZE_AND_CACHE_INDEX(size);
 
        HANDLE_BLOCK_INTERRUPTIONS();
+#if ZEND_DEBUG || !defined(ZEND_MM)
        REMOVE_POINTER_FROM_LIST(p);
+#endif
        p = (zend_mem_header *) ZEND_DO_REALLOC(p, sizeof(zend_mem_header)+MEM_HEADER_PADDING+SIZE+END_MAGIC_SIZE);
        if (!p) {
                if (!allow_failure) {
@@ -299,11 +305,15 @@ ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LIN
                        exit(1);
 #endif
                }
+#if ZEND_DEBUG || !defined(ZEND_MM)
                ADD_POINTER_TO_LIST(orig);
+#endif
                HANDLE_UNBLOCK_INTERRUPTIONS();
                return (void *)NULL;
        }
+#if ZEND_DEBUG || !defined(ZEND_MM)
        ADD_POINTER_TO_LIST(p);
+#endif
 #if ZEND_DEBUG
        p->filename = __zend_filename;
        p->lineno = __zend_lineno;
@@ -461,7 +471,7 @@ ZEND_API void shutdown_memory_manager(int silent, int clean_cache TSRMLS_DC)
                return;
        }
 #endif
-
+#if ZEND_DEBUG || !defined(ZEND_MM)
        for (fci=0; fci<MAX_FAST_CACHE_TYPES; fci++) {
                fast_cache_list_entry = AG(fast_cache_list_head)[fci];
                while (fast_cache_list_entry) {
@@ -579,6 +589,7 @@ ZEND_API void shutdown_memory_manager(int silent, int clean_cache TSRMLS_DC)
        }
 #endif
 
+#endif
 #endif
 }
 
index 66b394bf768ca10a61e96a0c5220080cf2d5b1e9..c04ee1dee7e30353c062b036b7543472ee48b58b 100644 (file)
@@ -26,6 +26,8 @@
 #include "../TSRM/TSRM.h"
 #include "zend_globals_macros.h"
 
+#include "zend_mm.h"
+
 #define MEM_BLOCK_START_MAGIC  0x7312F8DCL
 #define MEM_BLOCK_END_MAGIC            0x2A8FCC84L
 #define MEM_BLOCK_FREED_MAGIC  0x99954317L
@@ -43,8 +45,10 @@ typedef struct _zend_mem_header {
        THREAD_T thread_id;
 # endif
 #endif
+#if ZEND_DEBUG || !defined(ZEND_MM)
     struct _zend_mem_header *pNext;
     struct _zend_mem_header *pLast;
+#endif
        unsigned int size:31;
        unsigned int cached:1;
 } zend_mem_header;
index bd560a6c30439f907168fad45bb69ff256475781..58286e55c2f949e2df6487df1284e4e6e8c25ad5 100644 (file)
@@ -22,7 +22,7 @@
 
 #include <sys/types.h>
 
-#include "zend.h"
+#include "zend_types.h"
 
 /* Define this to enable Zend MM */
 #undef ZEND_MM