Opened 9 years ago
#3137 new defect
Handle PSERROR_Game_World_MapLoadFailed during initial game start
Reported by: | historic_bruno | Owned by: | |
---|---|---|---|
Priority: | Should Have | Milestone: | Backlog |
Component: | Core engine | Keywords: | |
Cc: | Patch: |
Description
Currently, when a scenario version is too old and not supported, the map reader throws PSERROR_File_InvalidVersion
which is caught in CWorld::RegisterInit
. That in turn throws an uncaught PSERROR_Game_World_MapLoadFailed
exception, causing the game to crash. This occurs in game setup, before it ever reaches the loading screen.
What should happen is something like the case of failed random map scripts, calling CancelLoad()
to cleanup the init process and return the user to the main menu with a friendly error message.
KernelBase.dll!_RaiseException@16 () Unknown msvcr120.dll!__CxxThrowException@8 () Unknown > pyrogenesis.exe!CWorld::RegisterInit(const CStrW & mapFile, JSRuntime * rt, JS::Handle<JS::Value> settings, int playerID) Line 93 C++ pyrogenesis.exe!CGame::RegisterInit(const JS::Handle<JS::Value> attribs, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & savedState) Line 171 C++ pyrogenesis.exe!CGame::StartGame(JS::MutableHandle<JS::Value> attribs, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & savedState) Line 277 C++ pyrogenesis.exe!`anonymous namespace'::StartGame(ScriptInterface::CxPrivate * pCxPrivate, JS::Handle<JS::Value> attribs, int playerID) Line 225 C++ pyrogenesis.exe!ScriptInterface::call<void,JS::Handle<JS::Value>,int,&`anonymous namespace'::StartGame>(JSContext * cx, unsigned int argc, JS::Value * vp) Line 113 C++ mozjs31-ps-release.dll!js::Invoke(JSContext * cx, JS::CallArgs args, js::MaybeConstruct construct) Line 468 C++ mozjs31-ps-release.dll!js::Invoke(JSContext * cx, const JS::Value & thisv, const JS::Value & fval, unsigned int argc, const JS::Value * argv, JS::MutableHandle<JS::Value> rval) Line 531 C++ mozjs31-ps-release.dll!js::jit::DoCallFallback(JSContext * cx, js::jit::BaselineFrame * frame, js::jit::ICCall_Fallback * stub_, unsigned int argc, JS::Value * vp, JS::MutableHandle<JS::Value> res) Line 8251 C++ [External Code] [Frames below may be incorrect and/or missing] mozjs31-ps-release.dll!EnterBaseline(JSContext * cx, js::jit::EnterJitData & data) Line 126 C++ mozjs31-ps-release.dll!js::jit::EnterBaselineAtBranch(JSContext * cx, js::InterpreterFrame * fp, unsigned char * pc) Line 209 C++ mozjs31-ps-release.dll!Interpret(JSContext * cx, js::RunState & state) Line 1713 C++ mozjs31-ps-release.dll!js::RunScript(JSContext * cx, js::RunState & state) Line 422 C++ mozjs31-ps-release.dll!js::Invoke(JSContext * cx, JS::CallArgs args, js::MaybeConstruct construct) Line 497 C++ mozjs31-ps-release.dll!js::Invoke(JSContext * cx, const JS::Value & thisv, const JS::Value & fval, unsigned int argc, const JS::Value * argv, JS::MutableHandle<JS::Value> rval) Line 531 C++ mozjs31-ps-release.dll!JS_CallFunctionValue(JSContext * cx, JS::Handle<JSObject *> obj, JS::Handle<JS::Value> fval, const JS::HandleValueArray & args, JS::MutableHandle<JS::Value> rval) Line 5064 C++ pyrogenesis.exe!IGUIObject::ScriptEvent(const CStr8 & Action) Line 509 C++ pyrogenesis.exe!IGUIObject::SendEvent(EGUIMessageType type, const CStr8 & EventName) Line 479 C++ pyrogenesis.exe!IGUIButtonBehavior::HandleMessage(SGUIMessage & Message) Line 90 C++ pyrogenesis.exe!CButton::HandleMessage(SGUIMessage & Message) Line 91 C++ pyrogenesis.exe!IGUIObject::SendEvent(EGUIMessageType type, const CStr8 & EventName) Line 477 C++ pyrogenesis.exe!CGUI::HandleEvent(const SDL_Event_ * ev) Line 150 C++ pyrogenesis.exe!CGUIManager::HandleEvent(const SDL_Event_ * ev) Line 331 C++ pyrogenesis.exe!gui_handler(const SDL_Event_ * ev) Line 48 C++ pyrogenesis.exe!in_dispatch_event(const SDL_Event_ * ev) Line 62 C++ pyrogenesis.exe!PumpEvents() Line 193 C++ pyrogenesis.exe!Frame() Line 321 C++ pyrogenesis.exe!RunGameOrAtlas(int argc, const char * * argv) Line 506 C++ pyrogenesis.exe!SDL_main(int argc, char * * argv) Line 550 C++ pyrogenesis.exe!main(int argc, char * * argv) Line 140 C pyrogenesis.exe!wmain(int argc, wchar_t * * argv) Line 380 C++ [External Code] pyrogenesis.exe!CallStartupWithinTryBlock() Line 397 C++ [External Code]
Note:
See TracTickets
for help on using tickets.