]> granicus.if.org Git - php/commitdiff
add win32 configure option for CLI to switch on CRT heap debugging
authorWez Furlong <wez@php.net>
Mon, 22 Dec 2003 13:08:04 +0000 (13:08 +0000)
committerWez Furlong <wez@php.net>
Mon, 22 Dec 2003 13:08:04 +0000 (13:08 +0000)
sapi/cli/config.w32
sapi/cli/php_cli.c

index 9f30ad6d7c56731a017a8f419f1df7859eb14f87..02f5f8b0fd9adfda09aa0af4328c804c2b0c48cf 100644 (file)
@@ -2,8 +2,12 @@
 // $Id$
 
 ARG_ENABLE('cli', 'Build CLI version of PHP', 'yes');
+ARG_ENABLE('crt-debug', 'Extra CRT debugging', 'no');
 
 if (PHP_CLI == "yes") {
        SAPI('cli', 'getopt.c php_cli.c', 'php.exe');
+       if (PHP_CRT_DEBUG == "yes") {
+               ADD_FLAG("CFLAGS_CLI", "/D PHP_WIN32_DEBUG_HEAP");
+       }
 }
 
index 306e143f2c09558e3deb160f2842100b6a63714d..420e355b438c608df7e80760f5633a86596f6e5c 100644 (file)
@@ -537,6 +537,20 @@ int main(int argc, char *argv[])
        void ***tsrm_ls;
 #endif
 
+#if defined(PHP_WIN32) && defined(_DEBUG) && defined(PHP_WIN32_DEBUG_HEAP)
+       {
+               int tmp_flag;
+               
+               _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
+               _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
+
+               tmp_flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
+               tmp_flag |= _CRTDBG_DELAY_FREE_MEM_DF;
+               tmp_flag |= _CRTDBG_LEAK_CHECK_DF;
+
+               _CrtSetDbgFlag(tmp_flag);
+       }
+#endif
 
 #ifdef HAVE_SIGNAL_H
 #if defined(SIGPIPE) && defined(SIG_IGN)