소스 검색

Fixed crash on empty save game list after filtering

Ivan Savenko 2 년 전
부모
커밋
b517adfb25
3개의 변경된 파일4개의 추가작업 그리고 5개의 파일을 삭제
  1. 1 0
      ChangeLog.md
  2. 3 4
      client/lobby/CSavingScreen.cpp
  3. 0 1
      client/lobby/CSavingScreen.h

+ 1 - 0
ChangeLog.md

@@ -4,6 +4,7 @@
 * Fixed movement cost penalty from terrain
 * Fixed empty Black Market on game start
 * Fixed centering of scenario information window
+* Fixed crash on empty save game list after filtering
 * Fixed blocked progress in Launcher on language detection failure
 * Launcher will now correctly handle selection of Data directory in H3 install
 

+ 3 - 4
client/lobby/CSavingScreen.cpp

@@ -31,8 +31,6 @@ CSavingScreen::CSavingScreen()
 {
 	OBJ_CONSTRUCTION_CAPTURING_ALL_NO_DISPOSE;
 	center(pos);
-	// TODO: we should really use std::shared_ptr for passing StartInfo around.
-	localSi = new StartInfo(*LOCPLINT->cb->getStartInfo());
 	localMi = std::make_shared<CMapInfo>();
 	localMi->mapHeader = std::unique_ptr<CMapHeader>(new CMapHeader(*LOCPLINT->cb->getMapHeader()));
 
@@ -52,7 +50,9 @@ const CMapInfo * CSavingScreen::getMapInfo()
 
 const StartInfo * CSavingScreen::getStartInfo()
 {
-	return localSi;
+	if (localMi)
+		return localMi->scenarioOptionsOfSave;
+	return LOCPLINT->cb->getStartInfo();
 }
 
 void CSavingScreen::changeSelection(std::shared_ptr<CMapInfo> to)
@@ -61,7 +61,6 @@ void CSavingScreen::changeSelection(std::shared_ptr<CMapInfo> to)
 		return;
 
 	localMi = to;
-	localSi = localMi->scenarioOptionsOfSave;
 	card->changeSelection();
 }
 

+ 0 - 1
client/lobby/CSavingScreen.h

@@ -23,7 +23,6 @@ class CSelectionBase;
 class CSavingScreen : public CSelectionBase
 {
 public:
-	const StartInfo * localSi;
 	std::shared_ptr<CMapInfo> localMi;
 
 	CSavingScreen();