Fix code-before-declaration error on Win32 with recent VC++ compilers
Steve Hay [Mon, 23 Nov 2009 23:04:41 +0000 (23:04 +0000)]
(We only #define SET_INVALID_PARAMETER_HANDLER for VC2005 and later, so
users of earlier compilers will not have seen this error)

win32/win32.c

index d583087..b9eea70 100644 (file)
@@ -4801,16 +4801,6 @@ Perl_win32_init(int *argcp, char ***argvp)
 {
     HMODULE module;
 
-    /* When the manifest resource requests Common-Controls v6 then
-     * user32.dll no longer registers all the Windows classes used for
-     * standard controls but leaves some of them to be registered by
-     * comctl32.dll.  InitCommonControls() doesn't do anything but calling
-     * it makes sure comctl32.dll gets loaded into the process and registers
-     * the standard control classes.  Without this even normal Windows APIs
-     * like MessageBox() can fail under some versions of Windows XP.
-     */
-    InitCommonControls();
-
 #ifdef SET_INVALID_PARAMETER_HANDLER
     _invalid_parameter_handler oldHandler, newHandler;
     newHandler = my_invalid_parameter_handler;
@@ -4828,6 +4818,16 @@ Perl_win32_init(int *argcp, char ***argvp)
 #endif
     MALLOC_INIT;
 
+    /* When the manifest resource requests Common-Controls v6 then
+     * user32.dll no longer registers all the Windows classes used for
+     * standard controls but leaves some of them to be registered by
+     * comctl32.dll.  InitCommonControls() doesn't do anything but calling
+     * it makes sure comctl32.dll gets loaded into the process and registers
+     * the standard control classes.  Without this even normal Windows APIs
+     * like MessageBox() can fail under some versions of Windows XP.
+     */
+    InitCommonControls();
+
     module = GetModuleHandle("ntdll.dll");
     if (module) {
         *(FARPROC*)&pfnZwQuerySystemInformation = GetProcAddress(module, "ZwQuerySystemInformation");