summaryrefslogtreecommitdiffstats
path: root/src/sh_mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sh_mem.c')
-rw-r--r--src/sh_mem.c19
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)
{