

















































































dbg_stress 1 for a few hours and some of them had this crash eventually










m_pClient->m_Snap.m_aCharacters[m_pClient->m_aLocalIDs[DummyID]].m_Cur being null before calling collsion stuff
OnStateChange component callback














CLayer and CCollision to prevent accesses to invalid memory when the classes are used after the map data has ...




























































1






1























c++
bool CGraphicsBackend_SDL_GL::TryCreateMsgBox(bool AsError, const char *pTitle, const char *pMsg)
{
m_pProcessor->ErroneousCleanup();
SDL_DestroyWindow(m_pWindow);
SDL_ShowSimpleMessageBox(AsError ? SDL_MESSAGEBOX_ERROR : SDL_MESSAGEBOX_WARNING, pTitle, pMsg, nullptr);
return true;
}
the function is so small
i guess we can live with 2 ifhere








This function should be called on the thread that created the parent window, or on the main thread if the messagebox has no parent. It will block execution of that thread until the user clicks a button or closes the messagebox.


dbg_break















c++
bool CGraphicsBackend_SDL_GL::TryCreateMsgBox(bool AsError, const char *pTitle, const char *pMsg)
{
m_pProcessor->ErroneousCleanup();
SDL_DestroyWindow(m_pWindow);
SDL_ShowSimpleMessageBox(AsError ? SDL_MESSAGEBOX_ERROR : SDL_MESSAGEBOX_WARNING, pTitle, pMsg, nullptr);
return true;
}
the function is so small
i guess we can live with 2 ifhere m_pWindow to SDL_ShowSimpleMessageBox as the last parameter to make it a modal dialog instead of destroying the window? Or does that also block input to the dialog for you?

m_pWindow to SDL_ShowSimpleMessageBox as the last parameter to make it a modal dialog instead of destroying the window? Or does that also block input to the dialog for you? 
























