This commit is contained in:
tildearrow 2022-05-29 00:04:33 -05:00
parent 6afe29682d
commit 7baf1d471f
2 changed files with 33 additions and 5 deletions

View file

@ -4253,7 +4253,7 @@ public:
} }
#ifdef _WIN32 #ifdef _WIN32
MessageBox(NULL,"Error","Furnace has crashed! please report this to the issue tracker immediately:\r\nhttps://github.com/tildearrow/furnace/issues/new\r\n\r\na file called furnace_crash.txt will be created in your user directory.\r\nthis will be important for locating the origin of the crash.",MB_OK|MB_ICONERROR); MessageBox(NULL,"Furnace has crashed! please report this to the issue tracker immediately:\r\nhttps://github.com/tildearrow/furnace/issues/new\r\n\r\na file called furnace_crash.txt will be created in your user directory.\r\nthis will be important for locating the origin of the crash.","Error",MB_OK|MB_ICONERROR);
std::string crashLocation; std::string crashLocation;
char* userProfile=getenv("USERPROFILE"); char* userProfile=getenv("USERPROFILE");
if (userProfile==NULL) { if (userProfile==NULL) {
@ -4284,7 +4284,7 @@ public:
failedPrinter.print(st, str); failedPrinter.print(st, str);
str+="\r\ncould not open furnace_crash.txt!\r\nplease take a screenshot of this error message box!"; str+="\r\ncould not open furnace_crash.txt!\r\nplease take a screenshot of this error message box!";
fprintf(stderr,"NOTICE: could not open furnace_crash.txt!\n"); fprintf(stderr,"NOTICE: could not open furnace_crash.txt!\n");
MessageBox(NULL,"Error",str.c_str(),MB_OK|MB_ICONERROR); MessageBox(NULL,str.c_str(),"Error",MB_OK|MB_ICONERROR);
#endif #endif
} }
@ -4490,6 +4490,32 @@ private:
printer.address = true; printer.address = true;
printer.print(st, std::cerr); printer.print(st, std::cerr);
#ifdef _WIN32
MessageBox(NULL,"Furnace has crashed! please report this to the issue tracker immediately:\r\nhttps://github.com/tildearrow/furnace/issues/new\r\n\r\na file called furnace_crash.txt will be created in your user directory.\r\nthis will be important for locating the origin of the crash.","Error",MB_OK|MB_ICONERROR);
std::string crashLocation;
char* userProfile=getenv("USERPROFILE");
if (userProfile==NULL) {
crashLocation="C:\\furnace_crash.txt";
} else {
crashLocation=userProfile;
crashLocation+="\\furnace_crash.txt";
}
FILE* crashDump=fopen(crashLocation.c_str(),"w");
#else
FILE* crashDump=fopen("/tmp/furnace_crash.txt","w");
#endif
if (crashDump!=NULL) {
Printer printer;
printer.address = true;
printer.print(st, crashDump);
fclose(crashDump);
} else {
#ifdef _WIN32
MessageBox(NULL,"could not do a crash dump!! :<","Error",MB_OK|MB_ICONERROR);
#endif
}
} }
}; };

View file

@ -306,11 +306,13 @@ int main(int argc, char** argv) {
} }
} }
if (!sh.loaded()) {
#ifdef _WIN32 #ifdef _WIN32
MessageBox(NULL,"Warning","crash backtrace not available!",MB_OK|MB_ICONWARNING); if (!sh.loaded()) {
#endif MessageBox(NULL,"crash backtrace not available!","Warning",MB_OK|MB_ICONWARNING);
} else {
MessageBox(NULL,"it will work","Notice",MB_OK|MB_ICONINFORMATION);
} }
#endif
e.setConsoleMode(consoleMode); e.setConsoleMode(consoleMode);