summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2018-09-08 13:57:01 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2018-09-08 13:57:01 +0200
commit3145d6c6b9286c13bc84496d3f3d9853a030136a (patch)
tree9c64ae3ddecc2e430dacc8052ccc9ce2c9caa4cf /main
parent98b01a14e3f29a058952563cd90785227dcfb3f6 (diff)
downloadphp-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.c18
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