Improvements to the malloc debugging stuff: when MALLOC_LOG is
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 15 Dec 2001 14:09:51 +0000 (14:09 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 15 Dec 2001 14:09:51 +0000 (14:09 +0000)
enabled, so that all mallocs and reallocs are tagged with a file
name and line number, this information is now shown in the `Out of
memory!' panic box.

git-svn-id: svn://svn.tartarus.org/sgt/putty@1497 cda61777-01e9-0310-a592-d414129be87e

misc.c

diff --git a/misc.c b/misc.c
index 3073115..cb894b3 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -379,8 +379,13 @@ static void *minefield_c_realloc(void *p, size_t size)
 #ifdef MALLOC_LOG
 static FILE *fp = NULL;
 
+static char *mlog_file = NULL;
+static int mlog_line = 0;
+
 void mlog(char *file, int line)
 {
+    mlog_file = file;
+    mlog_line = line;
     if (!fp) {
        fp = fopen("putty_mem.log", "w");
        setvbuf(fp, NULL, _IONBF, BUFSIZ);
@@ -399,7 +404,14 @@ void *safemalloc(size_t size)
     p = malloc(size);
 #endif
     if (!p) {
-       MessageBox(NULL, "Out of memory!", "PuTTY Fatal Error",
+       char str[200];
+#ifdef MALLOC_LOG
+       sprintf(str, "Out of memory! (%s:%d, size=%d)",
+               mlog_file, mlog_line, size);
+#else
+       strcpy(str, "Out of memory!");
+#endif
+       MessageBox(NULL, str, "PuTTY Fatal Error",
                   MB_SYSTEMMODAL | MB_ICONERROR | MB_OK);
        exit(1);
     }
@@ -427,7 +439,14 @@ void *saferealloc(void *ptr, size_t size)
 #endif
     }
     if (!p) {
-       MessageBox(NULL, "Out of memory!", "PuTTY Fatal Error",
+       char str[200];
+#ifdef MALLOC_LOG
+       sprintf(str, "Out of memory! (%s:%d, size=%d)",
+               mlog_file, mlog_line, size);
+#else
+       strcpy(str, "Out of memory!");
+#endif
+       MessageBox(NULL, str, "PuTTY Fatal Error",
                   MB_SYSTEMMODAL | MB_ICONERROR | MB_OK);
        exit(1);
     }