From 3145d6c6b9286c13bc84496d3f3d9853a030136a Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 8 Sep 2018 13:57:01 +0200 Subject: [PATCH] Report mem leaks to stderr if no Win debugger is present Formerly, we sent output regarding memory leaks always to the debugger on Windows, but this appears to be not useful especially for the PHPTs, which usually are not run under a debugger, and so important info will not be available there. --- main/main.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/main/main.c b/main/main.c index e4ae28d87b..c9c05dece5 100644 --- a/main/main.c +++ b/main/main.c @@ -1681,7 +1681,11 @@ static ZEND_COLD void php_message_handler_for_zend(zend_long message, const void snprintf(memory_leak_buf, 512, "Last leak repeated %lu time%s\n", leak_count, (leak_count>1?"s":"")); } # if defined(PHP_WIN32) - OutputDebugString(memory_leak_buf); + if (IsDebuggerPresent()) { + OutputDebugString(memory_leak_buf); + } else { + fprintf(stderr, "%s", memory_leak_buf); + } # else fprintf(stderr, "%s", memory_leak_buf); # endif @@ -1695,7 +1699,11 @@ static ZEND_COLD void php_message_handler_for_zend(zend_long message, const void snprintf(memory_leak_buf, 512, "=== Total %d memory leaks detected ===\n", *((uint32_t *) data)); # if defined(PHP_WIN32) - OutputDebugString(memory_leak_buf); + if (IsDebuggerPresent()) { + OutputDebugString(memory_leak_buf); + } else { + fprintf(stderr, "%s", memory_leak_buf); + } # else fprintf(stderr, "%s", memory_leak_buf); # endif @@ -1718,7 +1726,11 @@ static ZEND_COLD void php_message_handler_for_zend(zend_long message, const void snprintf(memory_leak_buf, sizeof(memory_leak_buf), "[null] Script: '%s'\n", SAFE_FILENAME(SG(request_info).path_translated)); } # if defined(PHP_WIN32) - OutputDebugString(memory_leak_buf); + if (IsDebuggerPresent()) { + OutputDebugString(memory_leak_buf); + } else { + fprintf(stderr, "%s", memory_leak_buf); + } # else fprintf(stderr, "%s", memory_leak_buf); # endif -- 2.50.0