X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=misc.c;h=6f2d5448dee146ede4d7111fc08455cc2d152c32;hb=07d48d8b27f833e26bb75c3973e69975e23a9f9c;hp=30731152c67180f7e2cff3dc57fb05493bd46336;hpb=306a13c025ff81dedb08bbef7a51ef3158016de0;p=PuTTY.git diff --git a/misc.c b/misc.c index 30731152..6f2d5448 100644 --- a/misc.c +++ b/misc.c @@ -294,7 +294,7 @@ static void *minefield_alloc(int size) /* * Update the admin region. */ - for (i = start + 2; i < start + npages - 1; i++) + for (i = start + 2; i < start + npages + 1; i++) minefield_admin[i] = 0xFFFE; /* used but no region starts here */ minefield_admin[start + 1] = region_start % PAGESIZE; @@ -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,9 +404,18 @@ 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); + fprintf(fp, "*** %s\n", str); + fclose(fp); +#else + strcpy(str, "Out of memory!"); +#endif + MessageBox(NULL, str, "PuTTY Fatal Error", MB_SYSTEMMODAL | MB_ICONERROR | MB_OK); - exit(1); + cleanup_exit(1); } #ifdef MALLOC_LOG if (fp) @@ -427,9 +441,18 @@ 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); + fprintf(fp, "*** %s\n", str); + fclose(fp); +#else + strcpy(str, "Out of memory!"); +#endif + MessageBox(NULL, str, "PuTTY Fatal Error", MB_SYSTEMMODAL | MB_ICONERROR | MB_OK); - exit(1); + cleanup_exit(1); } #ifdef MALLOC_LOG if (fp)