From cbb9532e6e94e02588cbd11b1a708df5e26fea7b Mon Sep 17 00:00:00 2001 From: jacob Date: Sun, 8 Dec 2002 14:44:42 +0000 Subject: [PATCH] Argh. With DEBUG and MALLOC_LOG enabled, I found output intended for the console was ending up in one or other of debug.log or putty_mem.log. I don't really understand why, but I've put some extra paranoia and caching in debug(()) and that seems to have fixed it (tm). Perhaps I can get back to debugging... git-svn-id: svn://svn.tartarus.org/sgt/putty@2291 cda61777-01e9-0310-a592-d414129be87e --- misc.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/misc.c b/misc.c index 6b2f9e68..496d30e3 100644 --- a/misc.c +++ b/misc.c @@ -592,6 +592,7 @@ void safefree(void *ptr) #ifdef DEBUG static FILE *debug_fp = NULL; +static HANDLE debug_hdl = INVALID_HANDLE_VALUE; static int debug_got_console = 0; static void dputs(char *buf) @@ -599,15 +600,18 @@ static void dputs(char *buf) DWORD dw; if (!debug_got_console) { - AllocConsole(); - debug_got_console = 1; + if (AllocConsole()) { + debug_got_console = 1; + debug_hdl = GetStdHandle(STD_OUTPUT_HANDLE); + } } if (!debug_fp) { debug_fp = fopen("debug.log", "w"); } - WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), buf, strlen(buf), &dw, - NULL); + if (debug_hdl != INVALID_HANDLE_VALUE) { + WriteFile(debug_hdl, buf, strlen(buf), &dw, NULL); + } fputs(buf, debug_fp); fflush(debug_fp); } -- 2.11.0