This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rely on C89 variadic prototypes
[perl5.git] / win32 / runperl.c
index 07e2bd6..2157224 100644 (file)
@@ -1,18 +1,42 @@
-#include <stdio.h>
-#include <win32io.h>
+#ifdef _MSC_VER
+#include <crtdbg.h>
+#endif
+
+#include "EXTERN.h"
+#include "perl.h"
 
-#ifndef _DLL
-extern WIN32_IOSUBSYSTEM win32stdio;
+#ifdef __GNUC__
+
+/* Mingw32 defaults to globing command line 
+ * This is inconsistent with other Win32 ports and 
+ * seems to cause trouble with passing -DXSVERSION=\"1.6\" 
+ * So we turn it off like this, but only when compiling
+ * perlmain.c: perlmainst.c is linked into the same executable
+ * as win32.c, which also does this, so we mustn't do it twice
+ * otherwise we get a multiple definition error.
+ */
+#ifndef PERLDLL
+int _CRT_glob = 0;
 #endif
 
-extern int RunPerl(int argc, char **argv, char **env, void *iosubsystem);
+#endif
 
 int
 main(int argc, char **argv, char **env)
 {
-#ifdef _DLL
-    return (RunPerl(argc, argv, env, NULL));
-#else
-    return (RunPerl(argc, argv, env, &win32stdio));
+#ifdef _MSC_VER
+    /* Arrange for _CrtDumpMemoryLeaks() to be called automatically at program
+     * termination when built with CFG = DebugFull. */
+    int currentFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
+    currentFlag |= _CRTDBG_LEAK_CHECK_DF;
+    _CrtSetDbgFlag(currentFlag);
+
+    /* Change this -1 to the allocation number of any reported memory leaks to
+     * break on the allocation call that was leaked. */
+    _CrtSetBreakAlloc(-1L);
 #endif
+
+    return RunPerl(argc, argv, env);
 }
+
+