diff options
Diffstat (limited to 'src/sh_mem.c')
-rw-r--r-- | src/sh_mem.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/sh_mem.c b/src/sh_mem.c index 453640f..6d402fa 100644 --- a/src/sh_mem.c +++ b/src/sh_mem.c @@ -76,20 +76,25 @@ unsigned long Mem_Current = 0, Mem_Max = 0; SH_MUTEX_RECURSIVE(mutex_mem); #endif -/* define MEM_LOG to an absolute filename to enable this */ +/* define MEM_LOG to enable this */ +/* #define MEM_LOG 1 */ #ifdef MEM_LOG void sh_mem_dump () { memlist_t * this = memlist; FILE * fd; + static unsigned int nr = 0; + char filename[256]; + snprintf(filename, sizeof(filename), "sh_mem_dump.%04u.%lu", nr, (unsigned long) sh.pid); + SH_MUTEX_RECURSIVE_INIT(mutex_mem); SH_MUTEX_RECURSIVE_LOCK(mutex_mem); - fd = fopen(MEM_LOG, "w"); + fd = fopen(filename, "w"); if (!fd) { - perror(MEM_LOG); + perror(filename); _exit(EXIT_FAILURE); } @@ -102,7 +107,9 @@ void sh_mem_dump () sl_fclose(FIL__, __LINE__, fd); SH_MUTEX_RECURSIVE_UNLOCK(mutex_mem); - _exit(EXIT_SUCCESS); + ++nr; + /* _exit(EXIT_SUCCESS); */ + return; } #else void sh_mem_dump () @@ -317,8 +324,8 @@ void * sh_mem_malloc (size_t size, char * file, int line) SL_RETURN( theAddress, _("sh_mem_malloc")); } -static void ** sh_mem_dummy_a; -static memlist_t ** sh_mem_merr_3; +void ** sh_mem_dummy_a; +memlist_t ** sh_mem_merr_3; void sh_mem_free (void * aa, char * file, int line) { |