wseh: write the minidump as soon as possible (inspired by http://www.wildfiregames.com/forum/index.php?showtopic=12533)

GameSetup: fix fs::path append (previous code compiled with VC2005 but
is apparently invalid)

This was SVN commit r7064.
This commit is contained in:
janwas 2009-08-01 22:01:01 +00:00
parent c8cfd8b40b
commit 38737202cb
2 changed files with 6 additions and 5 deletions

View File

@ -254,6 +254,11 @@ long __stdcall wseh_ExceptionFilter(struct _EXCEPTION_POINTERS* ep)
if(win_is_locked(WDBG_SYM_CS) == 1)
DEBUG_DISPLAY_ERROR(L"Exception raised while critical section is held - may deadlock..");
// a dump file is essential for debugging, so write it before
// anything else goes wrong (especially before showing the error
// dialog because the user could choose to exit immediately)
wdbg_sym_WriteMinidump(ep);
// extract details from ExceptionRecord.
wchar_t descriptionBuf[150];
const wchar_t* description = GetExceptionDescription(ep, descriptionBuf, ARRAY_SIZE(descriptionBuf));
@ -262,10 +267,6 @@ long __stdcall wseh_ExceptionFilter(struct _EXCEPTION_POINTERS* ep)
char func[DBG_SYMBOL_LEN] = {0};
GetExceptionLocus(ep, file, &line, func);
// this must happen before the error dialog because user could choose to
// exit immediately there.
wdbg_sym_WriteMinidump(ep);
wchar_t message[500];
const wchar_t* messageFormat =
L"Much to our regret we must report the program has encountered an error.\r\n"

View File

@ -607,7 +607,7 @@ static void InitVfs(const CmdLineArgs& args)
CStr path = "mods/" + mods[i];
size_t priority = i;
const int flags = VFS_MOUNT_WATCH|VFS_MOUNT_ARCHIVABLE;
g_VFS->Mount("", binariesDir/"../data"/path, flags, priority);
g_VFS->Mount("", (binariesDir/"../data")/path, flags, priority);
}
// don't try g_VFS->Display yet: SDL_Init hasn't yet redirected stdout