diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2018-09-08 13:57:01 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2018-09-08 13:57:01 +0200 |
commit | 3145d6c6b9286c13bc84496d3f3d9853a030136a (patch) | |
tree | 9c64ae3ddecc2e430dacc8052ccc9ce2c9caa4cf /main | |
parent | 98b01a14e3f29a058952563cd90785227dcfb3f6 (diff) | |
download | php-git-3145d6c6b9286c13bc84496d3f3d9853a030136a.tar.gz |
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.
Diffstat (limited to 'main')
-rw-r--r-- | main/main.c | 18 |
1 files 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 |