diff options
-rw-r--r-- | osdep/main-fn-win.c | 28 | ||||
-rw-r--r-- | player/main.c | 25 |
2 files changed, 28 insertions, 25 deletions
diff --git a/osdep/main-fn-win.c b/osdep/main-fn-win.c index d8dbcd5a8b..5b0f22058d 100644 --- a/osdep/main-fn-win.c +++ b/osdep/main-fn-win.c @@ -1,5 +1,9 @@ #include <windows.h> +#ifndef BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE +#define BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE (0x0001) +#endif + #include "config.h" #include "common/common.h" @@ -25,8 +29,32 @@ static bool has_redirected_stdio(void) is_valid_handle(GetStdHandle(STD_ERROR_HANDLE)); } +static void microsoft_nonsense(void) +{ + // stop Windows from showing all kinds of annoying error dialogs + SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); + + // Enable heap corruption detection + HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0); + + HMODULE kernel32 = GetModuleHandleW(L"kernel32.dll"); + WINBOOL (WINAPI *pSetDllDirectory)(LPCWSTR lpPathName) = + (WINBOOL (WINAPI *)(LPCWSTR))GetProcAddress(kernel32, "SetDllDirectoryW"); + WINBOOL (WINAPI *pSetSearchPathMode)(DWORD Flags) = + (WINBOOL (WINAPI *)(DWORD))GetProcAddress(kernel32, "SetSearchPathMode"); + + // Always use safe search paths for DLLs and other files, ie. never use the + // current directory + if (pSetSearchPathMode) + pSetDllDirectory(L""); + if (pSetSearchPathMode) + pSetSearchPathMode(BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE); +} + int wmain(int argc, wchar_t *argv[]) { + microsoft_nonsense(); + // If started from the console wrapper (see osdep/win32-console-wrapper.c), // attach to the console and set up the standard IO handles bool has_console = terminal_try_attach(); diff --git a/player/main.c b/player/main.c index d4feeff61c..dc5c901447 100644 --- a/player/main.c +++ b/player/main.c @@ -65,10 +65,6 @@ #ifdef _WIN32 #include <windows.h> - -#ifndef BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE -#define BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE (0x0001) -#endif #endif #if HAVE_COCOA @@ -284,27 +280,6 @@ static void osdep_preinit(int argc, char **argv) enable_talloc = "1"; if (enable_talloc && strcmp(enable_talloc, "1") == 0) talloc_enable_leak_report(); - -#ifdef _WIN32 - // stop Windows from showing all kinds of annoying error dialogs - SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); - - // Enable heap corruption detection - HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0); - - HMODULE kernel32 = GetModuleHandleW(L"kernel32.dll"); - WINBOOL (WINAPI *pSetDllDirectory)(LPCWSTR lpPathName) = - (WINBOOL (WINAPI *)(LPCWSTR))GetProcAddress(kernel32, "SetDllDirectoryW"); - WINBOOL (WINAPI *pSetSearchPathMode)(DWORD Flags) = - (WINBOOL (WINAPI *)(DWORD))GetProcAddress(kernel32, "SetSearchPathMode"); - - // Always use safe search paths for DLLs and other files, ie. never use the - // current directory - if (pSetSearchPathMode) - pSetDllDirectory(L""); - if (pSetSearchPathMode) - pSetSearchPathMode(BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE); -#endif } static int cfg_include(void *ctx, char *filename, int flags) |